2011年6月2日

FileUpload 上傳檔案大小的限制

以往上傳檔案大小的限制是在 web.config 的 maxRequestLength 屬性 (單位為 KB)

<system.web>
    <httpRuntime 
        executionTimeout="110"
        maxRequestLength="4096"
    />
</system.web>

但今天我上傳一個 30 MB 的檔案 (maxRequestLength 已經放大了),卻還是產生以下的錯誤訊息



錯誤摘要

HTTP 錯誤 404.13 - Not Found
要求篩選模組設定為拒絕超過要求內容長度的要求。

最有可能的原因:
  • 網頁伺服器上的要求篩選設定為拒絕要求,因為內容長度超過設定的值。
解決方法:
  • 確認 applicationhost.config 或 web.config 檔案中的 configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength 設定。
連結及其他資訊

此為安全性功能。除非完全瞭解變更的範圍,否則請勿變更此功能。您可以將 IIS 伺服器設定為拒絕內容長度大於指定值的要求。如果要求的內容長度大於設定的長度,則會傳回此錯誤。如果必須增加內容長度,請修改 configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength 設定。



原來 Windows Server 2008 (IIS 7.0) 上又多了一個 maxAllowedContentLength 屬性 (單位為 Byte)

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="1073741824" />
        </requestFiltering>
    </security>
</system.webServer>

其預設值為 30000000 Bytes (~28.6 MB),所以當我們上傳一個 30 MB 的檔案就會產生以上的錯誤了。

所以我們就把值設定為 1 GB (1024x1024x1024),然後就可以原來的方式用 maxRequestLength 屬性來控制上傳檔案大小從 4MB 到 maxAllowedContentLength 屬性的值之間了。

參考:

沒有留言: