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

问题描述 投票:0回答:2

我正在为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。

我在机智的尽头。为什么我的路由仅对大文件失败?

c# asp.net-mvc jquery-file-upload
2个回答
2
投票

在web.config中的maxAllowedCOntentLength下签出system.webServer设置并设置所需的最大值(以字节为单位的值:]

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

0
投票

Roman.Pavelko的回答并没有成为问题,但确实使我走上了正确的道路。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.