HTTP 錯誤 404.13 - Not Found 請求篩選模組被配置為拒絕超過請求內容長度的請求。(上傳檔案長度問題)
HTTP 錯誤 404.13 - Not Found 請求篩選模組被配置為拒絕超過請求內容長度的請求。
問題:HTTP 錯誤 404.13 - Not Found 請求篩選模組被配置為拒絕超過請求內容長度的請求。
原因:Web 伺服器上的請求篩選被配置為拒絕該請求,因為內容長度超過配置的值(IIS 7 預設檔案上傳大小時30M)。
解決:更改asp.net檔案上傳大小限制
1. 修改IIS的applicationhost.config
檔案位置: %windir%/system32/inetsrv/config/applicationhost.config
找到<requestFiltering>節點,該節點下預設沒有 <requestLimits maxAllowedContentLength="上傳大小的值(單位:byte)" /> 元素。為這個節點新增如下元素:<requestLimits maxAllowedContentLength="2147483647" /> (上傳的大小將改為2G)
2. web.config中,新增如下內容
<configuration> <system.web> <httpRuntime maxRequestLength="2097151" executionTimeout="120"/> </system.web> </configuration>
說明:
httpRuntime 配置 ASP.NET HTTP 執行時設定,以確定如何處理對 ASP.NET 應用程式的請求。
maxRequestLength (指示 ASP.NET 支援的最大檔案上載大小)
指定輸入流緩衝閾值限制(以 KB 為單位)。此限制可用於防止拒絕服務攻擊;例如,因使用者向伺服器傳送大型檔案而導致的拒絕服務攻擊。
預設值為 4096 (4 MB),最大值只能是2097151K。
executionTimeout
指定在被 ASP.NET 自動關閉前,允許執行請求的最大秒數。預設90秒。
只有當 compilation 元素中的除錯屬性為 False 時,此超時屬性才適用。若要幫助避免在除錯期間關閉應用程式,請不要將此超時屬性設定為較大值。
3. web.config中,把以下內容加在<system.webServer>節點
<security>
<requestFiltering >
<requestLimits maxAllowedContentLength="2147483647" ></requestLimits>
</requestFiltering>
</security>
上述中maxAllowedContentLengt是以BK為單位。
ASP.NET配置設定: http://msdn.microsoft.com/zh-cn/library/b5ysx397(v=VS.80).aspx
ASP.NET MVC 上傳大檔案時404
前一段時間會員的上傳元件改用FLASH的swfupload來上傳,既能很友好的顯示上傳進度,又能完全滿足大檔案的上傳。
後來伺服器升級到windows 2008,改為IIS7後,上傳檔案一旦超過30M時,就出現404錯誤,而且是是上傳進度達到100%之後,真是讓人難思其解。
反覆測試,發現FLASH上傳檔案到並沒有正確的執行.NET程式,也就是.NET程式本身有問題;
但小於30M又是一切OK,難道是上傳的檔案大小有所限制?
檢查web.config的httpRuntime :
1 |
|
已經是很大值了。
因為無法正確得到詳細的錯誤資訊,就用一個普通的FORM提交一個FileUpload測試,原來真是web.config的設定問題:
報錯資訊:
最可能的原因:
Web 伺服器上的請求篩選被配置為拒絕該請求,因為內容長度超過配置的值。
可嘗試的操作:
確認 applicationhost.config 或 web.config 檔案中的 configuration/system.webServer/security/requestFiltering/[email protected] 設定。
連結和更多資訊
這是一項安全功能。請不要更改此功能,除非您完全清楚更改的影響範圍。您可以配置 IIS 7.0 伺服器以拒絕內容長度大於指定值的請求。如果請求的內容長度大於所配置的長度,便會返回此錯誤。如果需要增加內容長度,請修改 configuration/system.webServer/security/requestFiltering/[email protected] 設定。
解決方案
原來IIS7的上傳檔案大小,即便是在經典模式下,也一定要在system.webServer裡設定,加上去就OK了:
1 2 3 4 5 6 7 |
|