ASP.NET MVC showing error page on when sending responses with status 500
我在服务器中有以下动作:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[HttpPost] public JsonResult SearchContracts(SearchViewModel vm) { List<string> errors; if (IsValid(vm, out errors)) return Json(new { Errors = errors }, JsonRequestBehavior.AllowGet); |
在本地,效果很好。当请求无效时,它会返回一个带有错误的 JSON,并且响应中有一个用于 HTTP 状态代码的
部署后,IIS 将返回这个著名的错误页面,而不是描述的 JSON。
这里是
1
2 3 |
<customErrors mode="Off" defaultRedirect="~/error.htm">
<error statusCode="404" redirect="~/errorhandling/pagenotfound" /> </customErrors> |
我试着把它改成
我应该在哪里更改以停止接收那个丑陋的错误页面而不是我的美丽 JSON?
编辑:
我将状态代码更改为
来自这个链接:
解决了编辑
1
2 3 4 5 |
<system.webServer>
… <httpErrors existingResponse="PassThrough"></httpErrors> … </system.webServer> |
另一个离奇的微软故事。
您使用的是服务器错误而不是客户端错误。根据 5XX 错误的维基百科:
“The server failed to fulfill an apparently valid request.”
在这种情况下,您的服务器工作正常,客户端发送错误请求。请改用客户端错误 (4XX)。
如果您需要同时使用自定义错误页面并有时返回 httpErrors 部分中定义的 http 状态的自定义数据,请执行以下操作:
– 在 web.config 中设置
– 在您的操作中设置
– 清除 global.asax 中的服务器错误(在
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269632.html