ASP.NET为大文件抛出404,为超大文件抛出400

时间:2018-11-30 16:32:34

标签: c# asp.net api iis

当前正在编写一个使用multipart / form-data接受文件的API。以下是我在Web.config中的设置。 IIS设置为 1.0737GB 限制,.NET设置为 1.0485GB 限制。

  <httpRuntime requestValidationMode="2.0" maxRequestLength="1048576" executionTimeout="1000000" targetFramework="4.7.1" />

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

当我上传大小约为 1.5-2GB 的文件时,我会收到 404 的文件,如下面链接的Microsoft文档所述。这是服务器的预期响应。但是,当我上传一个更大的文件时,大约 2.5GB + ,我收到一个 400 错误请求。我一直在寻找文档来描述发生这种情况的原因以及为什么我不希望总是看到 404 的原因,但是却找不到说明可以返回 400 的信息。请求之间的唯一区别是附加的文件,没有其他更改。为了使文件更大,我还压缩了两个原始文件,将 404 放在一起。作为附加细节,在验证正常用例功能的单元和集成测试中涵盖了端点。手动测试低于IIS / .NET设置限制的文件时,端点可以工作。使用C#库项目以及Postman进行手动测试时,也已经看到此行为。非常感谢您的任何帮助!

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/

我的用例说明: 需要说明的是,我没有尝试增加请求的大小限制,我只需要确保超出大小限制的任何内容都会返回相同的错误。可公开获得的文档需要在出错的情况下声明返回值,当前可以是404或400,但我无法在文档中明确说明原因。

1 个答案:

答案 0 :(得分:0)

感谢所有评论者的帮助,Brian Clink提供的以下链接回答了该问题。 https://sitecore.stackexchange.com/questions/11788/sitecore-media-file-upload-above-2gb-throws-bad-request-400

IIS强制最大大小为2GB。因此,对于小于2GB且大于自定义IIS设置的所有请求,将返回404.13。对于2GB以上的所有请求,将返回404。