一、简介
在.net core 中Filter分为以下六大类:
1、AuthorizeAttribute(权限验证)
2、IResourceFilter(资源缓存)
3、IActionFilter(执行方法前后的记录)
4、IResultFilter(结果生成前后扩展)
5、IAlwaysRun(响应结果的补充)
6、IExceptionFilter(异常处理)
二、使用
public class CustomerExceptionFilterAttribute : Attribute, IExceptionFilter, IAsyncExceptionFilter { /// <summary> /// 这里分别继承了IExceptionFilter(同步)和IAsyncExceptionFilter(异步),当同步和异步都存在的时候会优先执行异步方法 /// </summary> public void OnException(ExceptionContext context) { throw new NotImplementedException(); } public Task OnExceptionAsync(ExceptionContext context) { // 判断是否是ajax请求 if(context.HttpContext.Request.Headers.ContainsKey("x-requested-with") && context.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest") { context.Result = new JsonResult(new { code = "-1", success = "true" }); } else { context.HttpContext.Response.Redirect("/Home/Index"); // 页面跳转路径可自定义 } context.ExceptionHandled = true; // 表示当前异常被处理过 return Task.CompletedTask; } }
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); // 全局异常 services.AddControllers(options => { options.Filters.Add(new CustomerExceptionFilterAttribute()); }); }
分类:
.NET
来自:https://www.cnblogs.com/sportsky/p/15933939.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统