ABP框架已经默认为我们实现了全局的异常模块,这里我们自定义全局异常模块,先在HelloWorldController
中写一个异常接口,测试下ABP的默认全局异常:
[HttpGet]
[Route("Exception")]
public string Exception()
{
throw new NotImplementedException("这是一个未实现的异常接口!");
}
在.HttpApi.Hosting
添加文件夹Middleware,新建一个中间件ExceptionHandlerMiddleware.cs,
当出现异常时直接执行ExceptionHandlerAsync()
方法,当没有异常发生时,在finally
中判断当前请求状态,当状态不是200,获取到状态码枚举的Key值用来当作错误信息返回,最后也执行ExceptionHandlerAsync()
方法,返回我们自定义的模型。
using Mag.Blog.ToolKits.Base;
using Microsoft.AspNetCore.Http;
using System.Net;
using System.Threading.Tasks;
using System;
using Mag.Blo