上传大文件时为什么找不到MVC路由?

我正在为MVC 5.2.3项目使用属性路由,并且遇到了一个奇怪的问题。

用户可以将文件上传到站点,最大文件大小为3 MB。此功能曾经并且正在正常工作。不过,最近,我意识到大小限制仅通过JavaScript实施。因此,我在保存文件之前添加了一些处理以检查服务器端大小。然后,我删除了前端的限制,并上传了5.26 MB的文件进行测试。令我欣慰的是,上传被阻止了。令我震惊的是,响应不是我格式化好的错误消息,而是404。

使用IIS Express进行调试时,我发现对于大型文件,该请求甚至无法执行。 另一方面,上传小文件(测试高达800KB)仍然可以正常工作。我什至可以将编码限制减少到1 KB,并通过不错的错误消息成功阻止800KB文件。

默认IIS最大请求长度似乎约为30 MB。我试图提高这一点,尽管如此,但没有运气。我查看了我们使用的jQuery文件上传库,但该库支持最大4GB的文件。我也尝试用Fiddler记录请求,但是找不到较大的请求失败的任何明显原因。我还尝试记录成功提交的文件,然后使用Fiddler的作曲器功能重放该文件,并用较大的文件替换该文件。我得到404。最后一个奇怪的事情我无法解释,当在Firefox开发工具中查看“网络”选项卡以获取成功请求时,“类型”列将为JSON。失败/大请求将改为显示XML。

为什么我的路由仅对大文件失败?

W245070399W 回答:上传大文件时为什么找不到MVC路由?

maxAllowedCOntentLength下的web.config中检查system.webServer设置,并设置所需的最大值(以字节为单位的值):

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

罗马。帕维尔科的答案并没有成为问题,但这确实使我走上了正确的道路。

您可以在web.config中应用另一种设置,如下所示:

<system.web>
   <httpRuntime maxRequestLength="xxxx" />
</system.web>

此值默认为4MB(以字节为单位)。将其增加到50MB之后,一切都变得像灵符一样!

本文链接:https://www.f2er.com/2736021.html

大家都在问