[Asp.Net Core]ExceptionFilter
Posted 厦门德仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]ExceptionFilter相关的知识,希望对你有一定的参考价值。
ExceptionFilter
ExceptionFilter
1.自定义一个CustomExceptionFilterAttribute ,实现IExceptionFilter接口,
2.实现方法,先判断,异常是否被处理过,如果没有被处理过,就处理;
3.分情况处理:1.如果是ajax请求,就返回JosnResult,如果不是Ajax请求,就返回错误页面
public class CustomExceptionFilterAttribute : Attribute, IExceptionFilter
private IModelMetadataProvider _modelMetadataProvider =null;
public CustomExceptionFilterAttribute(IModelMetadataProvider modelMetadataProvider)
_modelMetadataProvider = modelMetadataProvider;
/// <summary>
/// 当异常发生的时候触发到这儿来
/// </summary>
/// <param name="context"></param>
public void OnException(ExceptionContext context)
if (!context.ExceptionHandled) //异常是否被处理过
//在这里处理 如果是Ajax请求===返回Json
if (this.IsAjaxRequest(context.HttpContext.Request))//header看看是不是
XMLHttpRequest
context.Result = new JsonResult(new
Result = false,
Msg = context.Exception.Message
);//中断式---请求到这里结束了,不再继续Action
else
//跳转到异常页面
var result = new ViewResult ViewName = "~/Views/Shared/Error.cshtml" ;
result.ViewData = new ViewDataDictionary(_modelMetadataProvider,
context.ModelState);
result.ViewData.Add("Exception", context.Exception);
context.Result = result; //断路器---只要对Result赋值--就不继续往后了;
context.ExceptionHandled = true;
private bool IsAjaxRequest(HttpRequest request)
string header = request.Headers["X-Requested-With"];
return "XMLHttpRequest".Equals(header);
4.全局注册,在Starup中的ConfigureServices注册
services.AddMvc(option=>
//option.Filters.Add<CustomActionFilterAttribute>(); //全局注册:
//option.Filters.Add<CustomGlobalActionFilterAtrribute>();
option.Filters.Add<CustomExceptionFilterAttribute>();
);
5.测试
// [TypeFilter(typeof(CustomExceptionFilterAttribute))]
public IActionResult IndexException()
int i = 0;
int j = 1;
int k = j / i;//一定会发生异常
return View();
以上是关于[Asp.Net Core]ExceptionFilter的主要内容,如果未能解决你的问题,请参考以下文章
Asp.NET Core进阶 第四篇 Asp.Net Core Blazor框架
.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介
深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的
.Net Core 学习 - ASP.NET Core 概念学习
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门