在使用常规ASP.NET Web API多年后,我开始使用ASP.NET Core作为我的新REST API项目。我没有看到在ASP.NET Core Web API中处理异常的好方法。我试图实现异常处理过滤器/属性:public class ErrorHandlingFilter : ExceptionFilterAttribute{ public override void OnException(ExceptionContext context) { HandleExceptionAsync(context); context.ExceptionHandled = true; } private static void HandleExceptionAsync(ExceptionContext context) { var exception = context.Exception; if (exception is MyNotFoundException) SetExceptionResult(context, exception, HttpStatusCode.NotFound); else if (exception is MyUnauthorizedException) SetExceptionResult(context, exception, HttpStatusCode.Unauthorized); else if (exception is MyException) SetExceptionResult(context, exception, HttpStatusCode.BadRequest); else SetExceptionResult(context, exception, HttpStatusCode.InternalServerError); } private static void SetExceptionResult( ExceptionContext context, Exception exception, HttpStatusCode code) { context.Result = new JsonResult(new ApiResponse(exception)) { StatusCode = (int)code }; }}这是我的启动过滤器注册:services.AddMvc(options =>{ options.Filters.Add(new AuthorizationFilter()); options.Filters.Add(new ErrorHandlingFilter());});我遇到的问题是,当我AuthorizationFilter的异常发生时,它没有被处理ErrorHandlingFilter。我希望它能够像旧的ASP.NET Web API一样被捕获。那么如何捕获所有应用程序异常以及Action Filters的任何异常?
3 回答
- 3 回答
- 0 关注
- 1327 浏览
添加回答
举报
0/150
提交
取消