Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 例外过滤器asp.net mvc_C#_Asp.net_Asp.net Mvc_Date - Fatal编程技术网

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条件请检查我的答案