程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> C# 文件上傳 默認最大為4M的解決方法

C# 文件上傳 默認最大為4M的解決方法

編輯:ASP.NET基礎
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="") 來將其禁用。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved