超出最大请求长度。

Maximum request length exceeded.

提问人:Surya sasidhar 提问时间:10/4/2010 最后编辑:Neeraj KumarSurya sasidhar 更新时间:3/11/2023 访问量:968936

问:

当我尝试在我的网站中上传视频时,我收到错误 Maximum request length exced

如何解决此问题?

asp.net IIS 文件上传

评论


答:

32赞 Dave 10/4/2010 #1

默认情况下,最大请求大小为4MB (4096 KB)

此处对此进行了解释。

上面的文章还解释了如何解决此问题:)

评论

4赞 Bishop 10/14/2015
该链接将我重定向到 Microsoft 支持主页
1赞 gofr1 7/7/2016
也许出了什么问题。链接重定向至此处
2184赞 Sachin Shanbhag 10/4/2010 #2

如果使用 IIS 托管应用程序,则默认上载文件大小为 4MB。要增加它,请在您的web.config -

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

对于 IIS7 及更高版本,您还需要添加以下行:

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

注意

  • maxRequestLength千字节为单位
  • maxAllowedContentLength字节为单位

这就是此配置示例中的值不同的原因。(两者都相当于 1 GB。

评论

7赞 Surya sasidhar 10/4/2010
谢谢sachin,我添加了一些类似<httpRuntime maxRequestLength=“32768” executionTimeout=“180” />
42赞 Despertar 8/6/2012
使用 IIS 7.5 和 VS RC 2012 IIS Express,我必须同时设置这两个。httpRuntime 配置 ASP。NET 的最大长度,而 requestLimits 配置 IIS 的最大长度、stackoverflow.com/questions/6327452/...forums.iis.net/t/1169846.aspx
14赞 Serj Sagan 3/4/2013
请确保将此设置添加到主设置,而不是文件夹内的设置。Web.configViews
3赞 Don Thomas Boyle 9/3/2013
@SachinShanbhag 请包括卡尔斯的答案以使其正确,然后它就可以工作了。IMPORTANT: Both of these values must match. In this case, my max upload is 1024 megabytes.
3赞 Rosdi Kasim 4/9/2015
您的计算以 Kibibytes 和 Gibibyte 为单位,是时候更新答案了吗?呵呵。
20赞 ema 10/4/2010 #3

web.config 中有一个元素用于配置上传文件的最大大小:

<httpRuntime 
    maxRequestLength="1048576"
  />
599赞 Karl 9/19/2012 #4

我不认为这里提到过它,但要让它工作,我必须在 web.config 中提供这两个值:

system.web

<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

而在system.webServer

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

重要说明:这两个值必须匹配。在这种情况下,我的最大上传量为 1024 兆字节。

maxRequestLength 有 1048576 KB,maxAllowedContentLength1073741824 BYTES

我知道这是显而易见的,但很容易被忽视。

评论

5赞 VoidKing 3/2/2013
对于任何可能关心的问题:此答案也适用于 IIS-Express(带有 WebMatrix 的 asp.net 网页)
5赞 Gautam Jain 3/21/2013
是的,这是对我有用的答案,而不是萨钦的答案。它也适用于 Azure。
5赞 Miguel Angelo 6/4/2013
这绝对是正确的答案......这两个条目都必须存在。如果是 MVC 3,它可以位于项目根文件中。web.config
2赞 Muhammad Amin 8/20/2013
另一个重要的事情是 Karl 提到的“executionTimeout”
29赞 Ken Mc 11/20/2013
我必须将其与现有行相结合:<httpRuntime targetFramework=“4.5” maxRequestLength=“1048576” executionTimeout=“3600” />
219赞 Nick Albrecht 5/7/2013 #5

值得注意的是,您可能希望将此更改限制为您希望用于上传的 URL,而不是整个网站。

<location path="Documents/Upload">
  <system.web>
    <!-- 50MB in kilobytes, default is 4096 or 4MB-->
    <httpRuntime maxRequestLength="51200" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
        <requestLimits maxAllowedContentLength="52428800" /> 
      </requestFiltering>
    </security>
  </system.webServer>
</location>

评论

0赞 Luuk Krijnen 8/6/2014
考虑到位置,不错的解决方案。但是,在使用 MVC 时(因此使用路由)是否有位置路径?
1赞 Nick Albrecht 8/7/2014
它将是与您设置上传操作的路由相对应的 URL。就我而言,我有一个文档控制器,其中包含一个名为“上传”的操作,我将表单发布到该操作。在您的情况下,它将是您操作的 url 的任何内容。
0赞 DontVoteMeDown 1/7/2015
对于喜欢这个答案的人,请参阅此
2赞 Nicholas Petersen 10/29/2017
伙计,你摇滚。对不起,但我的一点点赞成票是不够的。
1赞 Nick Albrecht 9/5/2018
这将与 WebAPI 一起使用,最高可达 MVC v5。一旦你用 MVC Core 击中了 ASP.NET Core,那么你应该为 Kestrel 设置不同的选项。
56赞 Serge Shultz 5/24/2015 #6

以防万一有人正在寻找一种方法来处理此异常并向用户显示有意义的解释(例如“您正在上传的文件太大”):

//Global.asax
private void Application_Error(object sender, EventArgs e)
{
    var ex = Server.GetLastError();
    var httpException = ex as HttpException ?? ex.InnerException as HttpException;
    if(httpException == null) return;

    if (((System.Web.HttpException)httpException.InnerException).WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
    {
        //handle the error
        Response.Write("Too big a file, dude"); //for example
    }
}

(需要 ASP.NET 4 或更高版本)

评论

1赞 Der_Meister 1/19/2016
maxAllowedContentLength 应大于 (maxRequestLength * 1024) 以生成异常。
1赞 nrod 11/29/2018
这篇文章给了我警告用户所需的内容,但需要让它正常工作。就此而言,它仅适用于 的属性。HttpContext.Current.ClearError()Response.Redirect()web.configmaxRequestLengthhttpRuntime
0赞 Alfred Wallace 3/28/2019
文件大小验证和用户友好的消息可以通过 JS 在页面级别使用上传按钮上的事件完成,并将上传文件大小与最大上传限制进行比较。onchange
0赞 Garr Godfrey 3/5/2021
如果请求大于 ,这似乎不会被抛出。在这种情况下,IIS 似乎在调用 ASP 之前进行响应。所以需要设置这个非常大maxAllowedContentLength
5赞 mhenry1384 10/20/2015 #7

如果请求转到站点中的应用程序,请确保在根 web.config 中设置 maxRequestLength。应用程序的 web.config 中的 maxRequestLength 似乎被忽略。

评论

0赞 nickvans 2/8/2017
如果我能不止一次地投赞成票,我会的。这浪费了我生命中的一天。如果您有虚拟目录子应用程序,则必须将 和放在根级别(而不是子应用程序级别)的 Web 配置中。httpRuntime maxRequestLength="###requestLimits maxAllowedContentLength
10赞 UniCoder 12/4/2015 #8

maxRequestLength(长度,以 KB 为单位) 此处作为示例。我拿了 1024 (1MB) maxAllowedContentLength(以字节为单位的长度)应该与您的 maxRequestLength (1048576 字节 = 1MB) 相同。

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

<system.webServer>
   <security>
      <requestFiltering>
          <requestLimits maxAllowedContentLength="1048576"/>
      </requestFiltering>
   </security>
</system.webServer>
6赞 NiaoBlush 12/31/2015 #9

这也困扰了我好几天。 我修改了 Web.config 文件,但它不起作用。 原来我的项目中有两个Web.config文件, 我应该修改 ROOT 目录中的一个,而不是其他的。 希望这对您有所帮助。

-3赞 Cesar Miguel 1/20/2016 #10

我可以添加到配置未编译的 web

<system.web> 
  <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> 
  <compilation debug="true"/> 
</system.web> 
<security> 
  <requestFiltering> 
    <requestLimits maxAllowedContentLength="1048576"/> 
  </requestFiltering> 
</security>

评论

1赞 Mathias Lykkegaard Lorenzen 8/9/2016
该属性与所询问的内容无关,标记也无关。executionTimeoutcompilation
1赞 Graham Laight 4/18/2016 #11

我的 web.config 文件有多个 system.web 部分这一事实让我感到困惑:当我在配置级别将 httpRuntime maxRequestLength=“1048576” /> <添加到 system.web 部分时,它起作用了。

1赞 HyperActive 1/30/2017 #12

我不得不编辑文件并添加到...C:\Windows\System32\inetsrv\config\applicationHost.config<requestLimits maxAllowedContentLength="1073741824" />

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>

部分。

根据这篇 Microsoft 支持文章

评论

0赞 bvgheluwe 11/27/2019
web.config 应该覆盖这些,所以我认为没有必要修改.applicationHost.config
26赞 Sergey Tarasov 8/10/2017 #13

如果无法更新配置文件,但控制处理文件上传的代码,请使用 .HttpContext.Current.Request.GetBufferlessInputStream(true)

参数的值指示框架忽略配置的请求限制。truedisableMaxRequestLength

有关详细说明,请访问 https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110.aspx

评论

0赞 Nicholas Petersen 6/2/2018
太棒了,那么排名第一的答案怎么会有> 1600 票,而这只有 5 票?这太棒了,因为很多时候,这只是我们想要的一个动作。此外,不会混淆其他设置等。
0赞 Chris Catignani 7/6/2018
这就是我一直在寻找的。
0赞 Ehsan Abidi 7/27/2022
@Nicholas Petersen 如帮助文件所述,您不能在.aspx页面使用此方法,这就是原因
19赞 BernieSF 3/22/2018 #14

将所有答案汇总到一个地方:

<system.web>
  <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>

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

规则:

  • maxRequestLength(以 kb 表示)值必须匹配 maxAllowedContentLength(以字节表示)。
  • 大多数情况下,system.web 部分可能已经包含“httpRuntime”。将 targetFramework 设置为使用的 .net 版本。

笔记:

  • maxRequestLength 的默认值为 4096 (4mb)。最大值为 2,147,483,647
  • maxAllowedContentLength 的默认值为 30,000,000(约 30mb)。最大值为 4,294,967,295

更多信息 MSDN

评论

0赞 S. B. 5/19/2022
这应该在 <configuration> </configuration 中>对吧?
0赞 BernieSF 6/8/2022
@S.B. 肯定的
1赞 Nida Akram 11/24/2020 #15

我正在处理同样的错误,花时间通过在web.config文件中添加以下行来解决它

<system.web>
   <httpRuntime targetFramework="4.7.1" maxRequestLength="1048576"/>
</system.web>

 <system.webServer>
   <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
</system.webServer>
0赞 Soundar Rajan 3/11/2023 #16

注意:正如一些人指出的那样,已经有一个 <httpRuntime 条目。在我的 web.config 文件中。我盲目地从这里复制并粘贴了另一个 httpRuntime,它使整个站点崩溃。