【发布时间】:2015-01-05 15:28:26
【问题描述】:
我在服务器中有以下动作:
[HttpPost]
public JsonResult SearchContracts(SearchViewModel vm)
{
List<string> errors;
if (IsValid(vm, out errors))
{
return Json(service.Search(vm), JsonRequestBehavior.AllowGet);
}
else
{
HttpContext.Response.StatusCode = 500;
return Json(new { Errors = errors }, JsonRequestBehavior.AllowGet);
}
}
在本地,效果很好。当请求无效时,它会返回一个带有错误的 JSON,并且响应中有一个 500 表示 HTTP 状态代码。
部署后,IIS 将返回this famed error page,而不是描述的 JSON。
这里是 web.config 以及 customErrors 部分的详细信息:
<customErrors mode="Off" defaultRedirect="~/error.htm">
<error statusCode="404" redirect="~/errorhandling/pagenotfound" />
</customErrors>
我尝试将其转为On,但均未成功。
我应该在哪里更改以停止接收那个丑陋的错误页面而不是我的美丽 JSON?
编辑:
我将状态码更改为400,现在我得到的是文本Bad Request,而不是JSON:
【问题讨论】:
-
简单不要使用dark error 500来通知用户模型的无效状态,它的目的是在服务器端出现问题但服务器本身无法告诉你问题时使用.例如,访问邮件服务器或类似的东西时访问被拒绝。
标签: c# asp.net-mvc json http iis