Gre*_*ter 26 asp.net iis asp.net-web-api
我有一个Web API控制器POST方法,在本地和测试服务器上运行良好.如果一切顺利,它会返回:
new HttpResponseMessage( HttpStatusCode.Created )
Run Code Online (Sandbox Code Playgroud)
如果出现问题,它会返回:
new HttpResponseMessage<IEnumerable<string>>( usefulMessages, HttpStatusCode.BadRequest );
Run Code Online (Sandbox Code Playgroud)
问题是,当我向测试服务器发出导致错误的请求时,我收到了错误的请求代码,但我从未看到过这些消息.如果我向本地计算机发出完全相同的请求,我会看到消息.以下输出来自我自己的工具:
发送请求到我的本地机器我得到:
Status code: 400 (BadRequest)
Response data: ["Error message one", "Error message two"]
Run Code Online (Sandbox Code Playgroud)
向测试服务器发送请求我得到:
Status code: 400 (BadRequest)
Response data: Bad Request
Run Code Online (Sandbox Code Playgroud)
正在运行的代码完全相同.数据库是一样的.除服务请求的服务器外,一切都是一样的.我甚至有代码通过电子邮件发送自己的错误消息,所以我知道服务器正在生成正确的错误消息并且行为正确.这可能是一个IIS的东西(比如customErrors = RemoteOnly for Web API)?不仅从响应数据中省略了错误消息,而且发生了短语"错误请求"而不是放在那里.
有任何想法吗?谢谢.
syn*_*ody 25
看一下HttpConfiguration.IncludesErrorDetailPolicy上的这篇MSDN帖子:
在你的Global.asax中:
var config = GlobalConfiguration.Configuration;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
Run Code Online (Sandbox Code Playgroud)
我已使用此配置属性强制错误消息包含详细信息.
Hau*_*Haf 17
有同样的问题.这确实是因为自定义错误设置.
在真实的场景中,你肯定会想在你的应用程序中使用自定义错误页,但为了自定义异常的消息在的WebAPI工作,你需要禁用自定义错误页.
如何解决这个问题?幸运的是,您可以使用<location>
web.config中的元素来解决此问题.
解:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
我在自己的应用程序中使用此方法,效果很好.
对我来说,这听起来很可能是您的自定义错误模式。WebAPI 在 ASP.NET (MVC) 之上运行,因此它使用所有相同的 web.config 设置。
如果是测试服务器,您可以尝试关闭 customErrors 来验证。
<system.web>
<customErrors mode="Off" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16511 次 |
最近记录: |