Netcore使用Filter来实现接口的全局异常拦截

Posted lunawzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netcore使用Filter来实现接口的全局异常拦截相关的知识,希望对你有一定的参考价值。

 

public class MyException : Attribute, IExceptionFilter
    {
        private readonly ILogger<MyException> _logger;

        public MyException(ILogger<MyException> logger)
        {
            _logger = logger;
        }
        public void OnException(ExceptionContext context)
        {
            if (!context.ExceptionHandled)
            {
                //写入日志
                _logger.LogError($"出错:{context.Exception.Message}");

                //定义返回信息
                var res = new
                {
                    Code = 500,
                    Message = "发生错误,请联系管理员"
                };
                context.Result = new ContentResult
                {
                    // 返回状态码设置为200,表示成功
                    StatusCode = StatusCodes.Status200OK,
                    // 设置返回格式
                    //ContentType = "application/json;charset=utf-8",
                    //Content = JsonConvert.SerializeObject(res)
                    ContentType = "text/html;charset=utf-8",
                    Content = $"<h2 style=\'color:red\'>发生错误 :{context.Exception.Message}</h2>"
                };
                context.ExceptionHandled = true;
            }
        }
    }
  services.AddControllersWithViews(options=>
            {
                options.Filters.Add(typeof(MyException));
            });

 

以上是关于Netcore使用Filter来实现接口的全局异常拦截的主要内容,如果未能解决你的问题,请参考以下文章

[Abp vNext 入坑分享] - 5.全局异常替换

.netcore全局异常处理

JAVAWEB学习笔记24_filter实现自动登录和解决全局的编码问题

.netcore2.1 封装全局打印异常信息过滤器

MVC 自定义过滤器(Filter)实现路由控制异常处理授权处理(获取客户端信息)

SpringBoot+拦截器+自定义异常+自定义注解+全局异常处理简单实现接口权限管理...