简介

异常过滤器,顾名思义,就是当程序发生异常时所使用的过滤器。用于在系统出现未捕获异常时的处理。
实现一个自定义异常过滤器
自定义一个全局异常过滤器需要实现IExceptionFilter接口
public class HttpGlobalExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
throw new NotImplementedException();
}
}
IExceptionFilter接口会要求实现OnException方法,当系统发生未捕获异常时就会触发这个方法。OnException方法有一个ExceptionContext异常上下文,其中包含了具体的异常信息,HttpContext及mvc路由信息。系统一旦出现未捕获异常后,比较常见的做法就是使用日志工具,将异常的详细信息记录下来,方便修正调试。下面是日志记录的实现。
/// <summary>
/// 全局异常过滤器
/// </summary>
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<HttpGlobalExceptionFilter>();
});
测试
在请求中抛出一个异常
日志正确捕获到异常信息
浏览器返回500错误,并且返回自定义的错误信息。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# asp.net
# core
# MVC
# 过滤器
# ExceptionFilter
# ASP.NET Core MVC中过滤器工作原理介绍
# ASP.NET Core MVC 过滤器(Filter)
# ASP.NET Core MVC 过滤器的使用方法介绍
# asp.net core MVC 过滤器之ActionFilter过滤
# ASP.NET Core MVC过滤器运行流程解析
# 自定义
# 时就
# 顾名思义
# 错误信息
# 抛出
# 大家多多
# 有一个
# 方法如下
# 包含了
# 请重试
# _env
# _loggerFactory
# IHostingEnvironment
# gt
# summary
# ILoggerFactory
# readonly
# loggerFactory
# TargetSite
# Exception
相关文章:
成都网站制作公司哪家好,四川省职工服务网是做什么用?
高防服务器租用如何选择配置与防御等级?
如何用低价快速搭建高质量网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
模具网站制作流程,如何找模具客户?
图册素材网站设计制作软件,图册的导出方式有几种?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
广州建站公司哪家好?十大优质服务商推荐
购物网站制作公司有哪些,哪个购物网站比较好?
如何在IIS7中新建站点?详细步骤解析
广德云建站网站建设方案与建站流程优化指南
青岛网站建设如何选择本地服务器?
如何快速查询域名建站关键信息?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
七夕网站制作视频,七夕大促活动怎么报名?
如何在云服务器上快速搭建个人网站?
Thinkphp 中 distinct 的用法解析
TestNG的testng.xml配置文件怎么写
网站图片在线制作软件,怎么在图片上做链接?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何在局域网内绑定自建网站域名?
建站之星后台密码遗忘或太弱?如何重置与强化?
深圳网站制作的公司有哪些,dido官方网站?
网站制作说明怎么写,简述网页设计的流程并说明原因?
建站主机选哪种环境更利于SEO优化?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
宝塔面板如何快速创建新站点?
如何选购建站域名与空间?自助平台全解析
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
如何在腾讯云免费申请建站?
如何在景安服务器上快速搭建个人网站?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
视频网站制作教程,怎么样制作优酷网的小视频?
定制建站哪家更专业可靠?推荐榜单揭晓
如何用搬瓦工VPS快速搭建个人网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
香港服务器WordPress建站指南:SEO优化与高效部署策略
常州自助建站工具推荐:低成本搭建与模板选择技巧
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何快速打造个性化非模板自助建站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何在Tomcat中配置并部署网站项目?
建站之星展会模版如何一键下载生成?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
高性价比服务器租赁——企业级配置与24小时运维服务
零服务器AI建站解决方案:快速部署与云端平台低成本实践
建站主机解析:虚拟主机配置与服务器选择指南
如何快速生成ASP一键建站模板并优化安全性?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
*请认真填写需求信息,我们会在24小时内与您取得联系。