为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET MVC Ajax错误处理

ASP.NET MVC Ajax错误处理

慕码人2483693 2019-10-14 14:54:25
当jquery ajax调用动作时,如何处理控制器中引发的异常?例如,我想要一个全局javascript代码,该代码将在ajax调用期间在任何类型的服务器异常上执行,如果在调试模式下则显示异常消息,或者仅显示普通错误消息。在客户端,我将在ajax错误上调用一个函数。在服务器端,是否需要编写自定义的动作过滤器?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

谷歌搜索后,我基于MVC操作筛选器编写了一个简单的异常处理:


public class HandleExceptionAttribute : HandleErrorAttribute

{

    public override void OnException(ExceptionContext filterContext)

    {

        if (filterContext.HttpContext.Request.IsAjaxRequest() && filterContext.Exception != null)

        {

            filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

            filterContext.Result = new JsonResult

            {

                JsonRequestBehavior = JsonRequestBehavior.AllowGet,

                Data = new

                {

                    filterContext.Exception.Message,

                    filterContext.Exception.StackTrace

                }

            };

            filterContext.ExceptionHandled = true;

        }

        else

        {

            base.OnException(filterContext);

        }

    }

}

并写在global.ascx中:


 public static void RegisterGlobalFilters(GlobalFilterCollection filters)

 {

      filters.Add(new HandleExceptionAttribute());

 }

然后在布局或母版页上编写此脚本:


<script type="text/javascript">

      $(document).ajaxError(function (e, jqxhr, settings, exception) {

                       e.stopPropagation();

                       if (jqxhr != null)

                           alert(jqxhr.responseText);

                     });

</script>

最后,您应该打开自定义错误。然后享受它:)


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 679 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信