asp.net中ExceptionFilter过滤器怎么用
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要为大家展示了"asp.net中ExceptionFilter过滤器怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"asp.net中Exce
千家信息网最后更新 2025年02月01日asp.net中ExceptionFilter过滤器怎么用
这篇文章主要为大家展示了"asp.net中ExceptionFilter过滤器怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"asp.net中ExceptionFilter过滤器怎么用"这篇文章吧。
简介
异常过滤器,顾名思义,就是当程序发生异常时所使用的过滤器。用于在系统出现未捕获异常时的处理。
实现一个自定义异常过滤器
自定义一个全局异常过滤器需要实现IExceptionFilter接口
public class HttpGlobalExceptionFilter : IExceptionFilter { public void OnException(ExceptionContext context) { throw new NotImplementedException(); } }
IExceptionFilter接口会要求实现OnException方法,当系统发生未捕获异常时就会触发这个方法。OnException方法有一个ExceptionContext异常上下文,其中包含了具体的异常信息,HttpContext及mvc路由信息。系统一旦出现未捕获异常后,比较常见的做法就是使用日志工具,将异常的详细信息记录下来,方便修正调试。下面是日志记录的实现。
////// 全局异常过滤器 /// public class HttpGlobalExceptionFilter : IExceptionFilter { readonly ILoggerFactory _loggerFactory; readonly IHostingEnvironment _env; public HttpGlobalExceptionFilter(ILoggerFactory loggerFactory, IHostingEnvironment env) { _loggerFactory = loggerFactory; _env = env; } public void OnException(ExceptionContext context) { var logger = _loggerFactory.CreateLogger(context.Exception.TargetSite.ReflectedType); logger.LogError(new EventId(context.Exception.HResult), context.Exception, context.Exception.Message); var json = new ErrorResponse("未知错误,请重试"); if (_env.IsDevelopment()) json.DeveloperMessage = context.Exception; context.Result = new ApplicationErrorResult(json); context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError; context.ExceptionHandled = true; }public class ApplicationErrorResult : ObjectResult { public ApplicationErrorResult(object value) : base(value) { StatusCode = (int)HttpStatusCode.InternalServerError; } }public class ErrorResponse { public ErrorResponse(string msg) { Message = msg; } public string Message { get; set; } public object DeveloperMessage { get; set; } }
注册全局过滤器
过滤器已经编写完毕,接下来就需要在asp.net core MVC中注册。找到系统根目录Startup.cs文件,修改ConfigureServices方法如下
services.AddMvc(options => { options.Filters.Add(); });
测试
在请求中抛出一个异常
日志正确捕获到异常信息
浏览器返回500错误,并且返回自定义的错误信息。
以上是"asp.net中ExceptionFilter过滤器怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
过滤器
信息
方法
系统
全局
内容
篇文章
错误
就是
接口
日志
学习
帮助
顾名思义
接下来
上下
上下文
做法
工具
常见
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
实验设备管理数据库系统
java软件开发教师
申请网络安全证书
华三网络安全考试费
软件开发折旧摊销原则
金橘网络技术工作室
连接端口号为3307的数据库
品茗bim建模软件服务器地址
河南整机销售软件开发公司
房产系统网络安全应急预案
数据库国产化替代的中场战事
网络安全风险评分依据
现货交易软件开发费用
江西省网络安全法专场竞赛答案
男子利用网络技术获利400
imp数据库全称
易语言mssql数据库
广州天宏小助礼互联网科技
青岛超立方网络技术有限公司
软件开发者证书有用吗
阳江app软件开发前十
保山专科计算机网络技术
网络安全审查法实施
食品科研课题项目软件开发
方舟生存进化宇宙服务器怎么进
彩票游戏软件开发公司
网络安全割接风险评估报告
小白能学软件开发吗
mysql远程导出数据库
bat互联网科技有限公司