尝试在网站上上传视频时,出现错误“ 最大请求长度超出”。
我该如何解决?
尝试在网站上上传视频时,出现错误“ 最大请求长度超出”。
我该如何解决?
Answers:
如果您使用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。)
Web.config
而不是在Views
文件夹中添加该设置
我认为这里没有提到它,但是要使其正常工作,我必须在web.config中提供以下两个值:
在 system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
而在 system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
重要说明:这两个值必须匹配。在这种情况下,我的最大上传大小为1024 MB。
maxRequestLength有1048576 KILOBYTES,maxAllowedContentLength有1073741824 BYTES。
我知道这很明显,但是很容易忽略。
web.config
文件中。
可能值得注意的是,您可能希望将此更改限制为希望用于上传的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>
并且以防万一有人在寻找一种方法来处理此异常并向用户显示有意义的解释(例如“您正在上传的文件太大”):
//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或更高版本)
HttpContext.Current.ClearError()
它需要使之Response.Redirect()
正常工作。就web.config
其而言,仅适用于的maxRequestLength
属性httpRuntime
。
onchange
上载按钮上的事件来完成文件大小验证和用户友好消息,并将上载文件大小与最大上载限制进行比较。
如果您无法更新配置文件,但可以控制处理文件上传的代码,请使用HttpContext.Current.Request.GetBufferlessInputStream(true)
。
参数的true
值disableMaxRequestLength
告诉框架忽略配置的请求限制。
有关详细说明,请访问https://msdn.microsoft.com/zh-cn/library/hh195568(v=vs.110).aspx
将所有答案汇总在一个地方:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
规则:
笔记:
更多信息MSDN
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>
我必须编辑C:\Windows\System32\inetsrv\config\applicationHost.config
文件并添加<requestLimits maxAllowedContentLength="1073741824" />
到...的末尾。
<configuration>
<system.webServer>
<security>
<requestFiltering>
部分。
applicationHost.config
。
我可以添加到未编译的配置网站
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
属性与询问的内容无关,compilation
标签也无关。