WebApi 2 超出最大请求长度
Posted
技术标签:
【中文标题】WebApi 2 超出最大请求长度【英文标题】:WebApi 2 Maximum request length exceeded 【发布时间】:2015-10-04 18:27:40 【问题描述】:有谁知道是否有办法捕捉到这个错误?
基本上我正在尝试实现一些功能,以允许用户将文件从网页上传到 webapi 控制器。
这工作正常,但如果文件大小超过 web.config 中指定的最大大小,服务器会返回 404 错误。
我希望能够拦截这个并返回一个 500 错误以及客户端可以使用的消息。
我无法确定在 WebApi 中的何处执行此操作,因为我在 Global.asax 中实现的 Application_Error 方法从未被命中,而且似乎 IIS 没有将其传递给 WebApi 应用程序。
【问题讨论】:
您需要增加允许的最大请求大小。看到这个答案:***.com/questions/288612/… 我已经这样做了,但我希望能够在超出此值的情况下捕获错误。 【参考方案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
【讨论】:
这篇文章对上述配置有一些额外的细节:***.com/a/40085473/152648【参考方案2】:它在我的服务器上的样子:
<system.web>
<httpRuntime targetFramework="4.6.1" maxRequestLength="16240" />
</system.web>
【讨论】:
以上是关于WebApi 2 超出最大请求长度的主要内容,如果未能解决你的问题,请参考以下文章