mat*_*atk 5 iis json bad-request asp.net-mvc-4
在我的 MVC 应用程序中,当一个 POST 请求被发送到服务器(通过 jQuery)并且发生验证错误时,会返回一个 400 Bad Request,正如预期的那样:
HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
Date: Thu, 26 Feb 2015 08:35:50 GMT
Content-Length: 174
{"ReturnValue":null,"Results":[{"Message":"The xyz field is required.","ErrorNumber":123,"Severity":1}]}
Run Code Online (Sandbox Code Playgroud)
这在我的本地机器上按预期工作。但是,当我将应用程序部署到服务器时,完全相同的请求的响应看起来不同:
HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Date: Thu, 26 Feb 2015 08:37:01 GMT
Content-Length: 24
Invalid Request
Run Code Online (Sandbox Code Playgroud)
请注意,内容类型为text/html,并且响应正文不再包含 JSON。
这可能是什么原因?我会很感激一个指针从哪里开始调试。
在进一步搜索和阅读后,我在这篇文章中找到了答案,其中还引用了有用的文章IIS 7 Error Pages take over 500 Errors
问题是 IIS 接收了 400 多个错误请求错误并将我的自定义 JSON 响应替换为 IIS 错误内容。可以使用以下TrySkipIisCustomErrors设置禁用此行为:
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = 400;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8119 次 |
| 最近记录: |