【问题标题】:WEB API DELETE request causes internal server error 500 with 0 length contentWEB API DELETE 请求导致内部服务器错误 500,内容长度为 0
【发布时间】:2016-09-04 22:45:38
【问题描述】:

我创建了一个带有多个控制器的 Microsoft Web API。在我的本地机器(Win 7,IIS Express)上测试其中一个控制器一切正常。我可以使用请求 localhostetc/makes/1 删除 id 为 1 的“make”对象。当我部署到服务器(W2K8、IIS7.5)时,我在同一个请求中收到 500 错误 - 请参阅 http://api.carsnow.ie/makes/1

我的问题不是导致错误的原因,而是错误是什么?当我得到一个 0 长度的响应时,我看不到详细信息。早些时候我遇到了一个自定义错误,但在某个阶段,当我试图查看底层堆栈跟踪时,我什至丢失了。

到目前为止,我已经尝试了以下......

我在 web.config 中将 CustomErrors 设置为“关闭”

我将此代码添加到 WebAPIConfig.cs - http://lostechies.com/jimmybogard/2012/04/18/custom-errors-and-error-detail-policy-in-asp-net-web-api/

我加了

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 

到 Global.asax

我在 IIS7 中打开了详细错误

【问题讨论】:

  • 我还在配置文件中添加了
  • 您可能想在您的删除 API 上放置一个 uber try/catch 块,只是为了找到根本原因并在响应中发回错误消息或记录它以了解它。对于生产场景,建议返回一个通用的 500 错误,出于安全原因,可能带有错误 ID,而不是更多信息。 iis 7 及更高版本强制执行此操作。
  • 我试过这个,但仍然得到错误 - 这表明问题出在序列化例程或其他不是由控制器中的代码直接引起的问题。
  • 我也尝试了您可能的意思,但我错过了您的意思 - 这是整个应用程序的全局尝试捕获。这也不起作用,因为据我所知,问题出在 IIS 上。谢谢你的想法。

标签: c# asp.net-web-api iis-7.5


【解决方案1】:

这个article 应该可以帮助你:

在早期版本的 IIS 中,来自经典 ASP 脚本的错误消息 默认情况下被发送到 Web 浏览器。因为这些错误信息 可能会向恶意用户泄露敏感信息,IIS 7 及更高版本 默认禁用此功能。当您的经典 ASP 脚本 在 IIS 中遇到错误,您会收到以下错误消息 默认:

An error occurred on the server when processing the URL. Please contact the system administrator.

If you are the system administrator please click here to find out more about this error.

【讨论】:

  • 我使用的是 .Net Framework 4.5 - 不是经典的 ASP。不过感谢您的链接。
  • 忽略本文的那部分,IIS 配置应该对您的设置有效...
【解决方案2】:

我怀疑这对每个人都有效,但最后我能够通过删除 IIS 中网站的“错误页面”设置中的 500 个自定义错误页面的设置来强制 IIS。似乎当它找不到自定义错误的模板时,它吐出了真正的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2013-08-11
    • 2012-03-29
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多