我怎样才能在ASP.NET MVC的JSON格式返回500错误?
当ASP.NET MVC抛出一个异常时,它返回一个响应类型为text/html
的500错误 - 当然这是JSON无效。
我想回应一个期待JSON的Ajax请求,并发出一个我可以接收并向用户显示的错误。
是否有可能返回JSON与HTTP状态码500?
当问题是缺少参数时,在控制器甚至被调用之前发生500错误 - 所以控制器解决方案可能无法工作。 例如,在通常返回一个JsonResult的Action的调用中留下一个必需的参数,ASP.NET MVC会将其发送回客户端:
'/'应用程序中的服务器错误。 参数字典包含用于方法'System.Web.Mvc.JsonResult EditUser(Int32,System.String,System.String,System.String,System。)的非空类型'System.Int32'的参数'id'的空条目。 String,System.String,System.String,System.String,System.String)'in'bhh'。 可选参数必须是引用类型,可为空类型,或者声明为可选参数。 参数名称:参数
我正在使用jQuery; 有没有更好的方法来处理这个问题?
您可以使用自定义错误处理程序过滤器:
public class AjaxErrorHandler : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.ExceptionHandled = true;
filterContext.Result = new JsonResult
{
Data = new { errorMessage = "some error message" }
};
}
}
}
然后,通过Ajax调整您正在调用的控制器/操作,甚至注册为全局过滤器。
然后,在执行Ajax请求时,您可以测试是否存在错误属性:
$.getJSON('/foo', function(result) {
if (result.errorMessage) {
// Something went wrong on the server
} else {
// Process as normally
}
});
链接地址: http://www.djcxy.com/p/39203.html
上一篇: How can I return 500 error in JSON format in ASP.NET MVC?
下一篇: What are the returned parameters in the jQuery ajax success option?