C# 檔案上傳 預設最大為4M的解決方案

來源:互聯網
上載者:User

1,環境:window 2003 ,IIS6.0
要首先要修改IIS6.0中的asp請求的最大位元組數,預設時為200K;
方法:開啟位於 C:\Windows\System32\Inetsrv 中的 metabase.XML,
並修改 AspMaxRequestEntityAllowed 為你需要的值(例如 "1073741824", 1GB);
技術背景:
在 IIS 6.0 中, AspMaxRequestEntityAllowed 屬性指定了一個 ASP 請求(Request)可以使用的最大位元組數. 如果 Content-Length 頭資訊中包含的請求長度超過了 AspMaxRequestEntityAllowed 的值, IIS 將返回一個 403 錯誤資訊.
這個屬性值與 MaxRequestEntityAllowed 相似, 但是是針對 ASP 請求的. 假如你知道自己的 ASP 應用只需要處理很少的請求資料, 你可以在 World Wide Web Publishing Service (WWW 發布服務)層級設定全域的 MaxRequestEntityAllowed 屬性為 1MB, 並單獨設定 AspMaxRequestEntityAllowed 為一個較小的值.
注意: 在編輯檔案前請停止 IIS 服務, 否則無法儲存修改後的檔案.
也可以那麼解決:
到微軟網站載了IIS6 Resource Kit Tools(http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en),安裝後利用Metabase Explorer修改了(local)\LM\W3SVC\AspMaxRequestEntityAllowed屬性(預設為200K=204800),修改為1G就是了;同時修改了AspScriptTimeout屬性調整下時限,就可以上傳大檔案了。
2,.net中
(1)在web.comfig檔案中添加一個httpRuntime主鍵
<httpRuntime executionTimeout="90" maxRequestLength="40960" useFullyQualifiedRedirectUrl="false"
minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
maxRequestLength="40960" 是最大的請求數,單位為:K
(2)修改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config檔案
<httpRuntime executionTimeout="190" maxRequestLength="40960"
maxRequestLength="40960" 是最大的請求數,單位為:K
經實驗,(1)和(2)只要一個就可以。

配置httpRuntime也可以讓FileUpload上傳更大的檔案,不過設定太大了會因使用者將大量檔案傳遞到該伺服器而導致的拒絕服務的攻擊(屬性有說明)

<httpRuntime>

<httpRuntime useFullyQualifiedRedirectUrl="true|false"       maxRequestLength="size in kbytes"       executionTimeout="seconds"       minFreeThreads="number of threads"       minFreeLocalRequestFreeThreads="number of threads"       appRequestQueueLimit="number of requests"       versionHeader="version string"/>
屬性
屬性 選項 說明
appRequestQueueLimit ASP.NET 將為應用程式排隊的請求的最大數目。當沒有足夠的自由線程來處理請求時,將對請求進行排隊。當隊列超出了該設定中指定的限制時,將通過“503 - 伺服器太忙”錯誤資訊拒絕傳入的請求。
executionTimeout 指示在被 ASP.NET 自動關閉前,允許執行請求的最大秒數。
enable 指定是否在當前的節點及子節點層級啟用應用程式定義域。預設值為 true
true 指定啟用應用程式定義域。
false 指定禁用應用程式定義域。應用程式將不會在記憶體中載入,任何用戶端請求將導致出現錯誤號碼為 404 的錯誤。
idleTimeOut 指定應用程式定義域在經過多長的空閑時間後將予以關閉。預設值為 20 分鐘
enableKernelModeCache 指定是否啟用輸出緩衝。目前,該屬性只有在安裝 IIS 6.0 版或更高版本之後才起相應的作用。輸出緩衝的配置和請求的類型決定了是否對內容進行緩衝。

若要對響應進行緩衝,必須滿足以下條件:

  • 必須通過頁面指令或使用緩衝 API 顯式啟用緩衝。
  • 緩衝必須具有到期策略,以便核心知道何時放棄緩衝。
  • 緩衝不能有任何變數標題或參數。
  • 請求不能要求進行任何身分識別驗證。
true 指定啟用緩衝。
false 指定禁用緩衝。
maxRequestLength 指示 ASP.NET 支援的最大檔案上傳大小。該限制可用於防止因使用者將大量檔案傳遞到該伺服器而導致的拒絕服務的攻擊。指定的大小以 KB 為單位。預設值為 4096 KB (4 MB)。
minFreeLocalRequestFreeThreads ASP.NET 保持的允許執行新本地請求的自由線程的最小數目。該線程數目是為從本地主機傳入的請求而保留的,以防某些請求在其處理期間發出對本地主機的子請求。這避免了可能的因遞迴重新進入 Web 服務器而導致的死結。
minFreeThreads 允許執行新請求的自由線程的最小數目。ASP.NET 為要求附加線程來完成其處理的請求使這些線程保持自由狀態。
useFullyQualifiedRedirectUrl 指示用戶端重新導向是否是完整(採用 {HYPERLINK "http://server/path" } 格式,這是某些行動控制項所必需的),或者指示是否代之以將相對重新導向發送到用戶端。
true 指定用戶端重新導向需要以完整格式發送。這是通過自動將不是完整格式的所有重新導向轉換為完整格式來實現的。
false 指定用戶端重新導向不需要被自動轉換為完全限定格式。false 是預設選項。
versionHeader 指定 ASP.NET 隨每個響應所發送的版本頭的值。Microsoft Visual Studio .NET 使用該屬性來確定當前使用的 ASP.NET 版本。這對產品環境來說不是必需的,並且可以通過從 Web.config 或 Machine.config 移除該屬性,或將該屬性設定為空白字串 (versionHeader="") 來將其禁用。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.