在我的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。
这可能是什么原因?我希望能从哪里开始调试。
经过进一步的搜索和阅读后,我在这篇文章中找到了答案,该文章还引用了有帮助的文章IIS 7错误页面,该错误超过500个错误
问题是IIS接收了400多个Bad Request错误,并用IIS错误内容替换了我的自定义JSON响应。可以使用以下TrySkipIisCustomErrors
设置禁用此行为:
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = 400;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句