Maximum request length exceeded.
当我尝试在我的网站上载视频时,我得到的错误超过了最大请求长度。
我该怎么解决这个问题?
如果您使用IIS作为应用程序的宿主,则默认上载文件大小为4MB。要增加它,请使用web.config中的以下部分-
1 2 3 4 5 | <configuration> <system.web> <httpRuntime maxRequestLength="1048576" /> </system.web> </configuration> |
对于iis7及以上版本,还需要添加以下行:
1 2 3 4 5 6 7 | <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="1073741824" /> </requestFiltering> </security> </system.webServer> |
注:
maxRequestLength 以千字节为单位。maxAllowedContentLength 以字节为单位。
这就是为什么这个配置示例中的值不同。(两者都相当于1 GB)
我不认为这里提到过,但要使其工作,我必须在web.config中提供这两个值:
在
1 | <httpRuntime maxRequestLength="1048576" executionTimeout="3600" /> |
在
1 2 3 4 5 | <security> <requestFiltering> <requestLimits maxAllowedContentLength="1073741824" /> </requestFiltering> </security> |
重要提示:这两个值必须匹配。在这种情况下,我的最大上传量是1024兆字节。
maxrequestlength有1048576千字节,maxallowedcontentlength有1073741824字节。
我知道这很明显,但很容易被忽视。
值得注意的是,您可能希望将此更改限制为希望用于上载的URL,而不是整个网站。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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> |
以防有人想办法处理这个异常并向用户展示一个有意义的解释(比如"你上传的文件太大"):
1 2 3 4 5 6 7 8 9 10 11 12 13 | //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(httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge) { //handle the error Response.Write("Too big a file, dude"); //for example } } |
(需要ASP.NET 4或更高版本)
默认情况下,最大请求大小为4MB(4096KB)
这里解释一下:http://support.microsoft.com/default.aspx?scid=kb;en-us;295626
上面的文章还解释了如何解决这个问题:)
web.config中有一个元素可以配置上载文件的最大大小:
1 2 3 | <httpRuntime maxRequestLength="1048576" /> |
如果不能更新配置文件,但控制处理文件上载的代码,请使用
有关详细说明,请访问https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
这里的maxrequestlength(以KB为单位)如我取了1024(1MB)maxallowedContentlength(以字节为单位的长度)应该与您的maxrequestlength(1048576字节=1MB)相同。
1 2 3 4 5 6 7 8 9 10 11 | <system.web> <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="1048576"/> </requestFiltering> </security> </system.webServer> |
在一个地方总结所有答案:
1 2 3 4 5 6 7 8 9 10 11 | <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)。最大值为2147483647
- maxallowedContentLength的默认值为30000000(约30MB)。最大值为4294967295
更多信息MSDN
这也困扰了我好几天。我修改了web.config文件,但它不起作用。结果发现我的项目中有两个web.config文件,我应该修改根目录中的一个,而不是其他目录。希望这会有所帮助。
如果有一个请求要发送到站点中的应用程序,请确保在根web.config中设置maxrequestlength。应用程序web.config中的maxrequestlength似乎被忽略。
我不得不编辑
1 2 3 4 | <configuration> <system.webServer> <security> <requestFiltering> |
部分。
根据此Microsoft支持文章
我被web.config文件有多个system.web节的事实绊倒了:当我将
我可以添加到配置Web未编译
1 2 3 4 5 6 7 8 9 | <system.web> <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> <compilation debug="true"/> </system.web> <security> <requestFiltering> <requestLimits maxAllowedContentLength="1048576"/> </requestFiltering> </security> |