首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >非dev环境下忽略Web API方法返回的错误消息

非dev环境下忽略Web API方法返回的错误消息
EN

Stack Overflow用户
提问于 2012-04-20 21:11:46
回答 3查看 19.9K关注 0票数 27

我有一个Web API控制器POST方法,它在本地和测试服务器上运行良好。如果一切顺利,它将返回:

代码语言:javascript
复制
new HttpResponseMessage( HttpStatusCode.Created )

如果出现错误,它会返回:

代码语言:javascript
复制
new HttpResponseMessage<IEnumerable<string>>( usefulMessages, HttpStatusCode.BadRequest );

问题是,当我向测试服务器发出一个导致错误的请求时,我得到了错误的请求代码,但我从未看到消息。如果我向本地计算机发出完全相同的请求,我确实会看到消息。以下输出来自我自己的工具:

发送一个请求到我的本地机器,我得到:

代码语言:javascript
复制
Status code: 400 (BadRequest)
Response data: ["Error message one", "Error message two"]

向测试服务器发送请求,我得到:

代码语言:javascript
复制
Status code: 400 (BadRequest)
Response data: Bad Request

运行的代码是完全相同的。数据库是一样的。除了为请求提供服务的服务器之外,一切都是相同的。我甚至有代码将错误消息通过电子邮件发送给自己,这样我就知道服务器正在生成正确的错误消息,并且行为正确。这会不会是IIS的东西(就像Web API的customErrors = RemoteOnly的等价物)?不仅从响应数据中省略了错误消息,还发明了短语"Bad Request“放入其中。

有什么想法吗?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-05-04 01:46:19

看看HttpConfiguration.IncludesErrorDetailPolicy上的this MSDN post

在您的Global.asax中:

代码语言:javascript
复制
var config = GlobalConfiguration.Configuration;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

我已经使用此配置属性强制错误消息包含详细信息。

票数 29
EN

Stack Overflow用户

发布于 2014-05-12 21:50:29

也有同样的问题。这确实是因为自定义的错误设置。

在实际场景中,您肯定希望在应用程序中使用自定义错误页,但是为了让自定义异常消息在WebAPI中工作,您需要禁用自定义错误页。

如何解决这个问题?幸运的是,您可以在web.config中使用<location>元素来解决这个问题。

解决方案:

代码语言:javascript
复制
  <!-- General for the application -->
  <system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="YourCustomErrorPage.aspx"/>
  </system.web>

  <!-- Override it for paths starting with api (your WebAPI) -->
  <location path="api">
     <system.web>
        <customErrors mode="Off" />
     </system.web>
  </location>

我在自己的应用程序中使用了这种方法,效果很好。

票数 18
EN

Stack Overflow用户

发布于 2012-04-25 01:52:36

对我来说,这听起来很可能是你的customErrors模式。WebAPI运行在ASP.NET (MVC)之上,所以它使用所有相同的web.config设置。

如果是测试服务器,您可以尝试关闭customErrors进行验证。

代码语言:javascript
复制
<system.web>
    <customErrors mode="Off" />
</system.web>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10246942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档