最新要闻
- 机会越来越好-与君周末谈20230604
- 虚幻5国漫巅峰 《斗罗大陆》比比东成神 巨型镰刀秒杀唐三
- 甚至没动工!《赛博朋克2077》续作明年才将投入开发 播资讯
- 我的脸被隐翅虫毁容了!千万小心“会飞的硫酸”
- 积成电子:预中标1.05亿元国家电网采购项目_世界新消息
- 全球微资讯!时速133严重车祸 车主:感谢驱逐舰05救我一命 又买了辆比亚迪汉
- 环球热文:马斯克北京首日晚宴多少钱?22人“吃”掉4.5万元
- CPU的功能是什么_cpu的主要功能
- 网友把苹果封死水里一年 打开后水面飘了一层“巧克力”|每日时讯
- PS造假神了!_热点评
- 小娜再见!微软宣布:Win10、Win11将正式抛弃Cortana 全球热点
- 观点:不打算修!AMD EPYC Rome服务器芯片运行1044天必定死机
- 全球量产车最低风阻!昊铂Hyper GT本月上市:能耗比Model 3还低|视点
- 世界最牛计算机课程变样了:接受AI改造
- 姑姑拍到侄女做梦吃雪糕:画面分分钟萌翻
- 今头条!比亚迪突然上调车辆保养价格 部分车型涨幅达50%
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
ASP.NET Core 全局异常处理 世界热资讯
(资料图片仅供参考)
IAsyncExceptionFilter
在 ASP.NET Core 中,可以使用异常过滤器(Exception Filter)来捕获和处理应用程序中的异常。IExceptionFilter 接口和 IAsyncExceptionFilter 接口都可以用来实现自定义的异常过滤器。不过我更建议您考虑它的异步版本:IAsyncExceptionFilter。
public class CustomExceptionFilter : IAsyncExceptionFilter{ private readonly ILogger _logger; public CustomExceptionFilter(ILogger logger) { _logger = logger; } public async Task OnExceptionAsync(ExceptionContext context) { _logger.LogError(context.Exception, "An error occurred."); if (!context.ExceptionHandled) { context.Result = new ViewResult { ViewName = "Error" }; context.ExceptionHandled = true; } await Task.CompletedTask; }}
在这个示例中,我们创建了一个名为 CustomExceptionFilter 的自定义异常过滤器,它实现了 IAsyncExceptionFilter 接口。在 OnExceptionAsync 方法中,我们记录了异常并返回一个 ViewResult 对象来显示用户友好的错误信息。
要使用这个过滤器,只需要在 Startup.ConfigureServices 方法中注册它:
services.AddMvc(options =>{ options.Filters.Add();});
中间件处理异常
新建一个中间件在管道中实现全局异常捕获。
public class MyExceptionMiddleware{private readonly RequestDelegate _next;private readonly ILogger _logger;public MyExceptionMiddleware(RequestDelegate next, ILogger logger){_next = next;_logger = logger;}public async Task Invoke(HttpContext context){try{await _next(context);}catch (Exception ex){_logger.LogError($"An exception occurred: {ex}");context.Response.ContentType = "application/json";context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;var jsonResponse = System.Text.Json.JsonSerializer.Serialize(new { error = ex.Message });await context.Response.WriteAsync(jsonResponse);}}}
然后在 Startup.cs 中,注册管道:
app.UseMiddleware();
默认的AspNet Core异常处理
if (env.IsDevelopment()){// dev环境,一旦报错就会跳转到错误堆栈页面app.UseDeveloperExceptionPage();app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "DaXiong.Demo.WebApi v1"));}else{// 非dev环境输出格式,个人根据实际情况扩展app.UseExceptionHandler(errorApp =>{errorApp.Run(async context =>{Console.WriteLine();// 处理异常并生成响应var exception = context.Features.Get().Error;var statusCode = (int)HttpStatusCode.InternalServerError;var message = "An error occurred while processing your request.";// 根据异常类型决定如何响应请求...// 生成响应context.Response.StatusCode = statusCode;context.Response.ContentType = "application/json";await context.Response.WriteAsync(JsonConvert.SerializeObject(new{statusCode,message}));});});}
注意中间件的运行顺序
后添加的中间件返回数据会覆盖,前面的
一般情况使用默认的错误处理中间件也够了
有了异常中间件还需要异常过滤器(IExceptionFilter )吗
IExceptionFilter 作为MVC中间件之间的内容,它需要MVC在发现错误之后将错误信息提交给它处理,因此它的错误处理范围仅限于MVC中间件。所以,假如我们需要捕获MVC中间件之前的一些错误,其实是捕获不到的。 而对于ExceptionHandlerMiddleware中间件来说就很简单了,它作为第一个中间件,凡是在它之后的所有错误它都能够捕获得到。但是,如果你想要在一个控制器或动作方法上执行特定的异常处理逻辑,仍然可以使用 IAsyncExceptionFilter。通过使用该接口,你可以在控制器或动作方法级别组织、记录和响应异常。在这种情况下,控制器或动作方法将优先于全局的 UseExceptionHandler 中间件。
关键词:
ASP.NET Core 全局异常处理 世界热资讯
世界热门:(ex)BSGS/(扩展)大步小步算法 学习笔记
机会越来越好-与君周末谈20230604
虚幻5国漫巅峰 《斗罗大陆》比比东成神 巨型镰刀秒杀唐三
甚至没动工!《赛博朋克2077》续作明年才将投入开发 播资讯
我的脸被隐翅虫毁容了!千万小心“会飞的硫酸”
积成电子:预中标1.05亿元国家电网采购项目_世界新消息
全球微资讯!时速133严重车祸 车主:感谢驱逐舰05救我一命 又买了辆比亚迪汉
环球热文:马斯克北京首日晚宴多少钱?22人“吃”掉4.5万元
Web安全-渗透测试-基础知识01 世界播资讯
【天天速看料】Leetcode 1156. 单字符重复子串的最大长度
CPU的功能是什么_cpu的主要功能
网友把苹果封死水里一年 打开后水面飘了一层“巧克力”|每日时讯
PS造假神了!_热点评
读改变未来的九大算法笔记03_纠错码
当前报道:《安富莱嵌入式周报》第314期:微软推出开源DeviceScript编程语言适合低资源单片机,开源色度计,超声波穿戴设备,USB-C交换机,CMSIS
京东太狠:100W数据去重,用distinct还是group by,说说理由? 每日速讯
天天滚动:Spring整合mybatis使用xml配置事务
ChatGPT 国内镜像网站独家汇总:发现最优秀的人工智能对话体验!
小娜再见!微软宣布:Win10、Win11将正式抛弃Cortana 全球热点
观点:不打算修!AMD EPYC Rome服务器芯片运行1044天必定死机
全球量产车最低风阻!昊铂Hyper GT本月上市:能耗比Model 3还低|视点
世界最牛计算机课程变样了:接受AI改造
世界聚焦:Codeforces Round 876 (Div. 2)题解
姑姑拍到侄女做梦吃雪糕:画面分分钟萌翻
今头条!比亚迪突然上调车辆保养价格 部分车型涨幅达50%
【世界快播报】女子考科三系错安全带考官面如死灰:“交杯带”看无奈了
小娜再见!微软宣布:Win10、Win11将正式抛弃Cortana
汽车电动座椅原理_你知道吗|当前时讯
全球今热点:大量安卓用户逃离换iPhone:Android 13保有量不足15%
世界观速讯丨70万买红旗电动车 2年内修10次!车主退车遭拒:已修好无法退
劝学译文翻译_劝学译文
下水10秒即可感染 钻进皮肤体内生长!南京疾控提醒预防血吸虫病
世界简讯:1.2万元拍下单颗荔枝 男子:要送给女友
神速!这类品种再迎新成员,两大公募巨头助阵,对应ETF规模超870亿元_天天报资讯
焦点快看:男子路遇纸片鸟 一查竟是国保动物黄苇鳽:性格机警
QQ音乐豪华绿钻续费价格上调:连续包年158元 你续费吗?
速看:正版cd碟专卖店价格(正版cd碟专卖店)
微控制器实时操作系统实践1实时系统介绍 每日聚焦
全球消息!linux 性能自我学习 ———— cpu 快速定位问题 [六]
苹果语音助手功能将重大升级:Hey Siri成历史
3分钟回顾神十五航天员返回全程:遇上绝美日出朝霞
林峰交往过的女朋友(林峰女朋友)
MES系统初探(一)|世界最资讯
【环球财经】美国总统拜登签署债务上限法案
丰田反对电动车:建议别反对|环球观速讯
平均年龄最大的航天员乘组“落地” 神舟十五号载人飞行任务圆满成功 焦点快播
三星全球首款8K电竞显示器8月上市:用上TCL华星国产高端57英寸屏-世界今日讯
天天日报丨中国战舰果敢拦阻穿越台湾海峡的美国和加拿大海军舰艇
存储价格被国产干碎 大厂密谋涨价:2TB该抄底了
【全球播资讯】最多领1600元!北京发放新一批消费券:手机、电脑等都能用
《蜘蛛侠:纵横宇宙》票房超预期_当前热文
地图的三要素有哪些?_地图的三要素是什么 _3分
俄罗斯呼吁本国iPhone用户彻查手机 存在后门:苹果回应永远不会
【天天聚看点】太空出差186天!神十五乘组返回地球:成功着陆
今年前4个月沈阳市快递业务收入25.67亿元 环球时讯
新能源汽修人才缺口或达80%:汽修学员走出校门就进厂-焦点短讯
环球观焦点:苹果和安卓厂商为何都放弃了小屏市场?幕后原因揭晓
苹果头显来了:难成下一个“iPhone”
4个月卖1751.5亿 彩票盯上年轻人?专家提醒不能靠彩票发财 中奖率低
上海长兴岛房价最新走势_上海长兴岛房价
多彩网安入选第三届贵州省网络安全应急技术支撑单位
世界热讯:智齿是什么意思?_智齿是什么意思
焦点热议:致远的意思解释词语(致远的意思)
焦点速递!3099元起 vivo S17 Pro下周首销:影像比肩高端旗舰
网易云盘的歌怎样分享_网易云盘
环球简讯:神舟十五号载人飞船撤离空间站
每日视点!向安卓看齐!iOS 17下周发:开放第三方应用商店
天天热资讯!一年跌价超95% 只花38元华为P50 Pro秒变5G手机
环球观热点:上海两车“斗气” 致一车骑跨高架栏:专家喊话司机要跳出吃亏思维 吃亏是福
环球动态:高中毕业给朋友的留言(朋友给我留言说1601是什么意思)
LRU缓存与LinkedHashMap源码
天天热文:文心一言 VS 讯飞星火 VS chatgpt (30)-- 算法导论5.2 2题
热点在线丨关于使用openssl命令-同时生成私钥与CSR-Certificate Signing Request的方法记录
高三学生写永久请假条告别班主任:画面催泪
店家回应未开封饮品中有蟑螂:不可能出现蟑螂 全球讯息
全球滚动:注意!高考生这6样东西别发朋友圈
宫崎想乃(关于宫崎想乃介绍)_环球新消息
记录--手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化|当前关注
天天视点!津城高考“最后一课”:喊出自信 留下感动
世界热讯:东风着陆场准备就绪迎接航天员回家 科普:飞船改动越少越安全
天玑之王!vivo X100首发天玑9300:性能对标苹果A17
或信号错误!印度列车相撞事故已致死伤超千人:该国百列火车运行受影响 近乎崩溃_全球微头条
每日快讯!北京西城区举办建筑工地防汛抢险应急救援演练
印度列车相撞事故已致120死超800伤 车头被撞扁:现场惨烈
今日热文:椰树集团首次回应直播风格争议:审美回归、主打真实自然
【天天新要闻】读改变未来的九大算法笔记02_数据库
九八年属什么(中国与十二地支相配以人出生年份的十二种动物)-即时焦点
新动态:当在浏览器中输入百度地址后,发生了什么?(计算机网络篇)
ASP.NET Core优雅的添加HealthCheck_快看点
第六章:分区_每日热点
VX自动刷步数脚本
Visual Studio如何使用自带“诊断工具” 世界微头条
RCEP对15个签署国全面生效|天天消息
比过山车刺激多了 女子体验菲律宾360度秋千:全程尖叫 每日快播
世界滚动:AMD显卡两大神技宣布半年了:还都是PPT!
全世界最大盗版网站死了!居然还和俄乌冲突有关-环球微资讯
IGN满分的神作终于出中文了!可我却高兴不起来
迪士尼公主电影真人与动画对比 你最喜欢哪一个?
左蓝微电子技术有限公司_左蓝-世界快报