【问题标题】:WebApi 2 Maximum request length exceededWebApi 2 超出最大请求长度
【发布时间】:2015-10-04 18:27:40
【问题描述】:

有谁知道是否有办法捕捉到这个错误?

基本上我正在尝试实现一些功能,以允许用户将文件从网页上传到 webapi 控制器。

这工作正常,但如果文件大小超过 web.config 中指定的最大大小,服务器会返回 404 错误。

我希望能够拦截这个并返回一个 500 错误以及客户端可以使用的消息。

我无法确定在 WebApi 中的何处执行此操作,因为我在 Global.asax 中实现的 Application_Error 方法从未被命中,而且似乎 IIS 没有将其传递给 WebApi 应用程序。

【问题讨论】:

  • 您需要增加允许的最大请求大小。看到这个答案:stackoverflow.com/questions/288612/…
  • 我已经这样做了,但我希望能够在超出此值的情况下捕获错误。

标签: asp.net-web-api


【解决方案1】:

尝试将 IIS 设置为接受 2GB 请求(以字节为单位)。

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483648" /> // 2GB
    </requestFiltering>
  </security>
</system.webServer>

并为 ASP.NET 应用程序设置合理的请求大小(以千字节为单位)。

<system.web>
  <httpRuntime maxRequestLength="4096" /> // 4MB (default)
</system.web>

现在 IIS 应该允许小于 2GB 的请求传递给您的应用程序,但应用程序将跳转到 Application_Error 达到 4MB 请求大小。在那里你可以管理你想要返回的东西。

无论如何,大于 2GB 的请求总是会被 IIS 返回 404.13。

相关链接:

Dealing with large files in ASP.NET Web API

【讨论】:

【解决方案2】:

它在我的服务器上的样子:

<system.web>
<httpRuntime targetFramework="4.6.1" maxRequestLength="16240" />
</system.web>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多