2012-10-29 314 views
10

這裏就是我設置maxRequestLength至2GB(最大值),這表明由ASP.NET支持的最大請求大小:有沒有辦法忽略2GB文件上傳的maxRequestLength限制?

<system.web> 
    <httpRuntime maxRequestLength="2097151" executionTimeout="3600"/> 
    ... 

,在這裏我設置maxAllowedContentLength至4GB(最高值),其中規定在請求由IIS

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

我希望能夠上傳高達4GB支持的內容的最大長度,但我被maxRequestLength領域的限制。

我注意到這個第三方上傳工具(http://www.element-it.com/onlinehelp/webconfig.html)有一個ignoreHttpRuntimeMaxRequestLength屬性,它允許它上傳最大4GB的文件。

有誰知道我是否可以忽略maxRequestLength值這樣其他的上傳工具呢?

+0

你在使用上載?這是我的理解是,你可以使用傳輸編碼分塊大於2GB的文件上傳較大,因爲傳輸編碼分塊不包括Content-Length頭,所以不使用的maxRequestLength。這也是我的理解,大多數瀏覽器不支持分塊傳輸編碼。 – jac

+0

嘗試使用此:http://stackoverflow.com/a/12056417/551744。我使用JavaScript重新分割文件並在服務器端合併它們。這也可以幫助你:http://www.html5rocks.com/ru/tutorials/file/dndfiles/ –

回答

8

考慮的MaxRequestLength類型爲Int,此刻也沒有辦法解析比Int.Max正確的值。

我聽說他們可能會從微軟作爲尚未被增加IIS8,但沒有混凝土。我在.NET 4.5看到的唯一方法是使用HttpRequest.GetBufferlessInputStream其中

獲取可用於讀取傳入的HTTP實體主體中的流對象,可以選擇禁用了在該設置請求長度限制MaxRequestLength屬性。

+1

好點,我不知道'maxRequestLength'是'int'而不是'uint'。因爲你的請求長度永遠不會是負面的,所以它會更有意義。 – vane

+0

據我瞭解微軟ASP.NET固定上傳限制,但並沒有解決IIS:http://aspnet.uservoice.com/forums/41199-general-asp-net/suggestions/2642879-maximum-upload-size-in -asp-net-is-2gb-increase-it –

+1

MaxRequestLength以KB爲單位,最大值爲2 TB而非GB。這不是問題,但是正常的緩衝輸入流以及所有作爲多部分formdata解析器等的事實在2GB以上發生故障。唯一的解決方法就是GetBufferlessInputStream並自己解析請求。 – poizan42

-1

你應該能夠加入同一個節點到應用程序的web.config中像這樣覆蓋內的machine.config的設置。微軟有一些關於ASP.NET Configuration File Hierarchy and Inheritance的信息。

注意:埃裏克飛利浦是正確的,最大尺寸爲maxRequestLength是2,147,483,647(Int32.MaxValue)。這個答案是爲了說明如何從應用程序的web.config中重寫(或任何的.config)在machine.config中定義的設置/

<configuration> 
    ... 
    <system.web> 
     <httpRuntime maxRequestLength="2147483647"/> 
    ... 
    ... 
    </system.web> 
    ... 
</configuration> 

在雖然這樣做,你可能還需要增加超時或它可能會超時。

相關問題