asp.net core 统一异常处理
一 : 使用异常处理中间件处理异常
1 定义异常处理中间件
using System; using Microsoft.AspNetCore.Http; using System.Threading.Tasks; namespace 使用中间件统一处理异常_AspNetCore { /// <summary> /// 异常处理中间件 /// </summary> public class MyExceptionHandlerMiddleware { private readonly RequestDelegate next; public MyExceptionHandlerMiddleware(RequestDelegate next) { this.next = next; } public async Task<Task> Invoke(HttpContext context) { try { await next(context); } catch (Exception ex) { context.Response.ContentType = "application/json;charset=utf-8"; await context.Response.WriteAsync(Newtonsoft.Json.JsonConvert.SerializeObject(new { code = -20210415, msg = ex.Message ?? "发生未知错误" })); } return Task.CompletedTask; } } }
2 在 Startup.cs文件Configure方法中启用自定义的中间件
// 启用自定义的异常处理中间件 app.UseMiddleware<MyExceptionHandlerMiddleware>();
代码位置如下:
3 测试
本地运行还是可以在抛出异常处停止运行,点击“继续”会返回统一的异常处理结果格式
参考资源
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/write?view=aspnetcore-3.1