C# 例外过滤器asp.net mvc
我将创建自己的C# 例外过滤器asp.net mvc,c#,asp.net,asp.net-mvc,date,C#,Asp.net,Asp.net Mvc,Date,我将创建自己的exceptionfilter,它继承自filteratAttribute和ieexceptionfilter 源代码如下: public class IndexException : FilterAttribute, IExceptionFilter { public void OnException(ExceptionContext exceptionContext) { if (!exceptionContext.ExceptionHandle
exceptionfilter
,它继承自filteratAttribute
和ieexceptionfilter
源代码如下:
public class IndexException : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext exceptionContext)
{
if (!exceptionContext.ExceptionHandled && exceptionContext.Exception is IndexOutOfRangeException)
{
exceptionContext.Result = new RedirectResult("/Content/ExceptionFound.html");
exceptionContext.ExceptionHandled = true;
}
}
}
但当我的代码到达手动生成异常的索引方法时,我的过滤器无法工作
[IndexException]
public ActionResult Index()
{
throw new Exception("Не может быть меньше нуля");
您必须通过
FilterConfig.cs
中的RegisterGlobalFilters
在ASP.NET MVC管道中注册筛选器IndexException
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
// add your filter
filters.Add(new IndexException());
}
}
您必须通过
FilterConfig.cs
中的RegisterGlobalFilters
在ASP.NET MVC管道中注册筛选器IndexException
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
// add your filter
filters.Add(new IndexException());
}
}
如果捕获到
索引自动失效异常
,您的异常筛选器将仅重定向到异常发现.html
。在您提供的示例中,您抛出的是一个泛型异常
更改筛选器以捕获所有类型的异常,或者更改此行:
throw new Exception("Не может быть меньше нуля");
为此:
抛出新的IndexOutOfRangeException(索引异常)
如果捕获到索引自动失效异常
,则您的异常筛选器将仅重定向到异常发现.html
。在您提供的示例中,您正在抛出一个通用的异常
更改筛选器以捕获所有类型的异常,或者更改此行:
throw new Exception("Не может быть меньше нуля");
为此:
抛出新的IndexOutOfRangeException(索引异常)代码>尝试在控制器上而不是在methodif(!exceptionContext.ExceptionHandled&&exceptionContext.Exception是IndexAutoFrangeException)上添加[IndexException]
)->从操作引发的异常不是IndexAutoFrange类型,因此不会进入if条件请检查我的回答尝试添加[IndexException]
在控制器上而不是在methodif(!exceptionContext.ExceptionHandled&&exceptionContext.Exception是IndexAutoFrangeException)->从操作中引发的异常不是IndexAutoFrange类型,因此不会进入if条件请检查我的答案