mvc 上传文件 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。 maxRequestLength与 maxReceivedMessageSize 和 maxAllowedContentL区别

具体的错误信息如下:

mvc 上传文件 HTTP 错误 404.13 - Not Found  请求筛选模块被配置为拒绝超过请求内容长度的请求。  maxRequestLength与 maxReceivedMessageSize 和 maxAllowedContentL区别

在线上遇到了文件上传问题,在测试环境试了好久都没有发现问题到底出在哪里,以为是服务器做了各种限制,然后一点思绪都没有。最后,尝试将线上的代码包拷贝一份,在测试环境运行,刚开始的时候以为是代码逻辑的问题,把bin.,content,script和view文件夹复制到测试环境运行了一下,没有问题啊。一脸懵,到底怎么回事呢,最后实在没有办法了,死马当活马医吧(最开始,坚决否认是配置文件的问题,因为代码包自己打包的,所以,觉得不会存在问题的),比较一下线上的webconfig和线下的有什么不一样吧,解决发现了问题:

线上的缺少如下配置(在system.webServer 节点下进行配置):

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

然后将本地的这些代码注释掉,运行了一下,上传了一个不算大的压缩文件,果然出现了问题。不过线上由于屏蔽了错误信息,所以只返回了404错误,线下的调试。很明显的就看出问题了。

mvc 上传文件 HTTP 错误 404.13 - Not Found  请求筛选模块被配置为拒绝超过请求内容长度的请求。  maxRequestLength与 maxReceivedMessageSize 和 maxAllowedContentL区别

其实,错误信息中很明确的写明了应该是哪里的问题,应该怎样操作。但是,其实线上我配置了好几个属性,但是一直不理解之间的关联和区别。正好借着这个问题好好的梳理一下:

 maxRequestLength与 maxReceivedMessageSize 和 maxAllowedContentL之间的关联和区别

<!--配置asp.net http运行库的设置。可以在计算机,站点,应用程序和子目录级别声明

允许最多的请求个数100,最长允许执行请求时间为80秒,控制用户上传文件的大小,默认是4M。useFullyQualifiedRedirectUrl客户端重定向不需要被自动转换为完全限定格式。-->

<httpRuntime appRequestQueueLimit="100" executionTimeout="80" maxRequestLength="40960" useFullyQualifiedRedirectUrl="false"/>

设置最大文件请求,需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedContentLength,maxRequestLength 允许上传文件的长度,和请求的长度,两个大小需要设置一致,如果不一致,则以请求长度为准。

The maximum request size in kilobytes. The default size is 4096 KB (4 MB). 默认请求长度只有4M.   设置的单位都为byte

<system.web>
  <httpRuntime maxRequestLength="2147483647" executionTimeout="36000" delayNotificationTimeout="36000"/>
</system.web>

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

上一篇:asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求


下一篇:【转】IIS请求筛选模块被配置为拒绝超过请求内容长度的请求