2012-10-29 272 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> 

在虽然这样做,你可能还需要增加超时或它可能会超时。

相关问题