有没有办法忽略2GB文件上传的maxRequestLength限制?

时间:2012-10-29 21:10:16

标签: c# asp.net iis iis-7

这是我将maxRequestLength设置为2GB(最大值)的位置,表示ASP.NET支持的最大请求大小:

<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的文件。< / p>

有没有人知道我是否可以像其他上传工具那样忽略maxRequestLength值?

3 个答案:

答案 0 :(得分:8)

考虑到MaxRequestLength的类型是Int,目前无法正确解析高于Int.Max的值。

我听说他们可能会增加IIS8,但微软还没有具体的内容。我在.Net 4.5中看到的唯一方法是使用HttpRequest.GetBufferlessInputStream

  

获取一个Stream对象,该对象可用于读取传入的HTTP实体主体,可选择禁用MaxRequestLength属性中设置的请求长度限制。

答案 1 :(得分:0)

就我而言,这些是我需要应用的更改:

<system.web>
    <httpRuntime targetFramework="4.6.1" maxRequestLength="2147483647" />
</system.web>

<system.webServer>
     <serverRuntime uploadReadAheadSize="2147483647" />
     <security>
        <requestFiltering>
           <requestLimits maxAllowedContentLength="2147483647" />
        </requestFiltering>
     </security>
</system.webServer>

为了添加serverRuntime,请遵循this question的第一个答案中的指示

答案 2 :(得分:-1)

您应该能够通过将相同的节点添加到应用程序的web.config中来覆盖machine.config中的设置。 Microsoft提供了有关ASP.NET Configuration File Hierarchy and Inheritance的一些信息。

注意: Erik Philips是对的,maxRequestLength的最大尺寸为2,147,483,647(Int32.MaxValue)。这个答案是为了说明如何在应用程序的web.config /

中覆盖machine.config(或任何.config)中定义的设置。
<configuration>
    ...
    <system.web>
        <httpRuntime maxRequestLength="2147483647"/>
    ...
    ...
    </system.web>
    ...
</configuration>

在执行此操作时,您可能还希望增加超时,或者可能会超时。