【发布时间】: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