调试400 Bad Request响应

时间:2015-02-26 08:56:46

标签: json asp.net-mvc-4 iis bad-request

在我的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}]}

这可以在我的本地计算机上运行。但是,当我将应用程序部署到服务器时,完全相同的请求的响应看起来不同:

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

请注意,内容类型为text/html,响应正文不再包含JSON。

这可能是什么原因?我很感激指针从哪里开始调试。

1 个答案:

答案 0 :(得分:4)

在进一步搜索和阅读后,我在this post中找到了答案,该答案也引用了有用的文章IIS 7 Error Pages taking over 500 Errors

问题是IIS接收了400个错误请求错误并用IIS错误内容替换了我的自定义JSON响应。可以使用TrySkipIisCustomErrors设置禁用此行为:

Response.TrySkipIisCustomErrors = true;
Response.StatusCode = 400;