Core3.1全局异常过滤器

本文介绍了如何在ASP.NET Core3.1中创建并使用全局异常过滤器来统一处理应用程序中的异常。通过创建一个专门的过滤器类,并在Startup文件的ConfigureServices方法中进行注册,可以捕获来自Ajax请求和控制器方法的异常,实现优雅的错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各位客官,好歹点个赞啊!

1.首先 新建一个全局异常处理过滤器类


```csharp
/// <summary>
    /// 全局异常过滤器
    /// </summary>
    public class GlobalExceptionFilter : IExceptionFilter
    {
        public void OnException(ExceptionContext context)
        {
            if (!context.ExceptionHandled)//如果异常没处理
            {
                //判断请求是否来源ajax
                if (context.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest")
                {
                    context.ExceptionHandled = true;//设置异常已被处理
                    context.Result = new JsonResult(new { result = "no", msg = context.Exception.Message });
                }
                else
                {
                    context.ExceptionHandled = true;//设置异常已被处理
                    string msg = context.Exception.Message;
                    context.Result = new RedirectResult("/Account/Error");
                }
            }
        }
    }

2.在Startup文件的ConfigureServices方法中注入这个全局过滤器(红色部分)

services.AddControllersWithViews(a => { a.Filters.Add(typeof(GlobalExceptionFilter)); });

备注:来源于ajax请求的异常和来源于控制器方法里面的异常需要分别处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值