我正在为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。
为什么我的路由仅对大文件失败?