1. 程式人生 > >HTTP 錯誤 404.13 - Not Found 請求篩選模組被配置為拒絕超過請求內容長度的請求。(上傳檔案長度問題)

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

<httpRuntime maxRequestLength="2097151" executionTimeout="50000" />

已經是很大值了。

因為無法正確得到詳細的錯誤資訊,就用一個普通的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

<system.webServer>

  <security>

    <requestFiltering >

      <requestLimits maxAllowedContentLength="1073741824" ></requestLimits>

    </requestFiltering>

  </security>

</system.webServer>