gpt4 book ai didi

jquery - 如何在 ASP.NET MVC 中返回 JSON 格式的 500 错误?

转载 作者:行者123 更新时间:2023-12-03 22:18:36 25 4
gpt4 key购买 nike

当 ASP.NET MVC 抛出异常时,它会返回一个响应类型为 text/html 的 500 错误 - 当然,这是无效的 JSON。

我想响应一个需要 JSON 的 Ajax 请求,并带有一个我可以接收并显示给用户的错误。

  1. 是否可以返回 HTTP 状态代码为 500 的 JSON?

  2. 当问题是缺少参数时,在调用 Controller 之前就会出现 500 错误 - 因此 Controller 解决方案可能不起作用。例如,在对通常返回 JsonResult 的 Action 的调用中保留必需的参数,ASP.NET MVC 会将其发送回客户端:

Server Error in '/' Application. The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.JsonResult EditUser(Int32, System.String, System.String, System.String, System.String, System.String, System.String, System.String, System.String)' in 'bhh'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters

我正在使用 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 调用的 Controller /操作,甚至注册为全局过滤器。

然后在执行 Ajax 请求时,您可以测试错误属性是否存在:

$.getJSON('/foo', function(result) {
if (result.errorMessage) {
// Something went wrong on the server
} else {
// Process as normally
}
});

关于jquery - 如何在 ASP.NET MVC 中返回 JSON 格式的 500 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com