在asp.net核心中,可以使用异常过滤器。
我们可以创建一个自定义的异常过滤器,如:
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.ViewFeatures; .... .... public class HandleExceptionAttribute : ExceptionFilterAttribute { public override void OnException(ExceptionContext context) { var result = new ViewResult { ViewName = "Error" }; var modelMetadata = new EmptyModelMetadataProvider(); result.ViewData = new ViewDataDictionary( modelMetadata, context.ModelState); result.ViewData.Add("HandleException", context.Exception); context.Result = result; context.ExceptionHandled = true; } }
可以在三个范围之一中将过滤器添加到管道中。可以使用属性将过滤器添加到特定操作方法或控制器类。或者,可以为所有控制器和操作全局注册过滤器。通过将过滤器添加到ConfigureServices中的MvcOptions.Filters集合,全局添加过滤器:
services.AddMvc(options=>options.Filters.Add(new HandleExceptionAttribute()));