.Net Core ExceptionFilter
1..Net Core ActionFilter2..Net Core ResourceFilter3..Net Core Jwt鉴权授权4..Net Core Mvc Razor 组件5..Net Core Autofac6..Net Core ActionFilter
7..Net Core ExceptionFilter
8..Net Core AlwaysRunResultFilter9..Net Core EntityFrameCore10..Net Core 读取配置文件11..Net Core NLog+oracel12..Net Core MiddleWare13..Net Core WebApi14..Net Core gRpc调用作用
- 处理全局异常
- Authorization 和 ResourceFilter 中的异常捕捉不到
如果都设置执行顺序为:
- Action -> 出现异常 -> Exception处理 -> 处理完成返回对应信息或页面
实现
IExceptionFilter
IExceptionFilter
- 需要继承 Attribute 并 并实现 IExceptionFilter
- 实现接口方法
执行顺序为:
- 出现异常
- OnException
IAsyncResourceFilter
IAsyncResourceFilter
- 需要继承 Attribute 并 并实现 IAsyncExceptionFilter
- 实现接口方法
执行顺序为:
- 出现异常
- OnExceptionAsync
Demo
CustomExceptionFilterAttribute.cs
using Microsoft.AspNetCore.Mvc.Filters;
namespace Cnpc.Com.Ioc.WebApp.Filter.Exception
{
public class CustomExceptionFilterAttribute : Attribute, IAsyncExceptionFilter
{
ILogger<CustomExceptionFilterAttribute> logger;
public CustomExceptionFilterAttribute(ILogger<CustomExceptionFilterAttribute> logger)
{
this.logger = logger;
}
public async Task OnExceptionAsync(ExceptionContext context)
{
if (!context.ExceptionHandled)
{
this.logger.LogError(context.Exception.Message, context.Exception.StackTrace);
}
//异常已经处理完成
context.ExceptionHandled = true;
await Task.CompletedTask;
}
}
}
全局注册
Program.cs
builder.Services.AddControllersWithViews(
options =>
{
//这样注册将对所有action 都生效
options.Filters.Add<CustomAsyncAlwaysRunResultFilterAttribute>();
}).AddControllersAsServices();
合集:
C#
分类:
DotNetCore
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?