【问题标题】:ASP.NET throwing 404 for large file and 400 for extremely large filesASP.NET 对大文件抛出 404,对超大文件抛出 400
【发布时间】:2018-11-30 16:32:34
【问题描述】:

目前正在编写一个使用 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,我无法在文档中明确解释原因。

【问题讨论】:

  • 小文件会得到什么样的响应?像小于 1MB 的东西?
  • 你考虑过这个答案吗? :stackoverflow.com/questions/1599409/…
  • Andy Danger Gagne:对于 1kb 大小的文件,我得到了 200,并且能够成功上传文件并将其保存在我需要的地方。 Aristos:我还没有考虑过这个答案,但在阅读后看起来有些建议只是在搞乱我在 Web.config 中设置的设置。
  • 除了 Aristos 评论,也请查看:sitecore.stackexchange.com/questions/11788/…
  • 发布你学到的作为答案并接受它。

标签: c# asp.net api iis


【解决方案1】:

感谢所有评论者的帮助,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。

【讨论】:

    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多