.NetCore中间件之异常处理
1.中间件
在 .NetCore 中,中间件(Middleware)是一个可以处理 HTTP 请求或响应的软件管道.具体可以百度哈。
在这里,我们通过中间件来实现一个简单的全局的异常处理的中间件。
2.项目引入
2.1 创建中间件
新增类文件,命名为GlobalExceptionMiddleware.cs。代码如下:
public class GlobalExceptionMiddleware
{
private readonly RequestDelegate next;
public GlobalExceptionMiddleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context /* other dependencies */)
{
try
{
await next(context);
}
catch (Exception ex)
{
await HandleExceptionAsync(context, ex);
}
}
private static Task HandleExceptionAsync(HttpContext context, Exception exception)
{
var code = HttpStatusCode.OK;
var result = JsonConvert.SerializeObject(new TData
{
Tag = 0,
Message = exception.Message
});
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)code;
return context.Response.WriteAsync(result);
}
}
2.2 中间件使用
在StartUp.cs文件中的Configure方法加入下列:
app.UseMiddleware(typeof(GlobalExceptionMiddleware));
当然对于上述的程序,也可以简写,使用扩展方法进行处理,此处不做介绍。可以百度。