Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Asp.net mvc asp.net MVC中未命中自定义异常筛选器_Asp.net Mvc_Exception Handling - Fatal编程技术网

Asp.net mvc asp.net MVC中未命中自定义异常筛选器

Asp.net mvc asp.net MVC中未命中自定义异常筛选器,asp.net-mvc,exception-handling,Asp.net Mvc,Exception Handling,我有一个自定义异常过滤器,我用它来捕获我编写的自定义异常,但由于某种原因,当我抛出我的异常时,它永远不会到达过滤器。相反,我只是得到一个错误,用户代码没有处理我的异常。任何人都可以提供一些建议/帮助,我应该如何设置这个?相关代码如下: // controller [CustomExceptionFilter] public class SomeController : Controller { public SomeController()

我有一个自定义异常过滤器,我用它来捕获我编写的自定义异常,但由于某种原因,当我抛出我的异常时,它永远不会到达过滤器。相反,我只是得到一个错误,用户代码没有处理我的异常。任何人都可以提供一些建议/帮助,我应该如何设置这个?相关代码如下:

// controller    
[CustomExceptionFilter]
    public class SomeController : Controller
    {    
        public SomeController()
        {

        }
        public ActionResult Index()
        {
            SomeClass.SomeStaticMethod();
            return View();
        }
    }
这是具有customexception属性的控制器

// some class (where exception is being thrown)
public class SomeClass
{
    public static void SomeStaticMethod()
    {
        throw new MyCustomException("Test");
    }
}
这就是抛出异常的类(对于我的测试)(我也尝试过直接在控制器上抛出异常)

这是自定义异常筛选器…当执行代码并引发异常时,它永远不会被访问。相反,我得到了上面提到的错误。我读到的所有内容都表明,这是设置此设置的正确方法,但当我在自定义筛选器中设置断点时,它从未被命中

我错过了什么


TIA

一旦您处理了错误,您需要让过滤器上下文知道它已被处理。像这样:

filterContext.ExceptionHandled = true;
这应该在您的“//do stuff”部分中


我已经复制了你的代码,过滤器被调用了。我所做的唯一不同是添加了exceptionHandled代码,并在该行添加了断点。

希望您仍然遵循此操作,即使它已经运行了4天。我刚刚回到这里,在if块中添加了您的代码行……它永远不会被访问,因为我的OnException方法永远不会被调用。我是否需要在某个地方设置一个标志(可能在web.config中),或者告诉应用程序在这个过滤器中处理异常?我仍然在“抛出新的MyCustomException(“测试”)时出错;“一行,表示异常未被用户代码处理。我不需要设置任何标志,也不需要向web.config添加任何内容。它只起作用。当我在调试模式下单步执行时:首先抛出异常并在那里中断。然后我按play键,它在OneException中进入断点。您尝试过在调试模式下单步执行吗?我是。”假设所有内容都在同一命名空间中,并且您只有一个CustomExceptionFilter和CustomException。此外,请尝试注释检查异常类型的代码,以防调用筛选器,但由于某些原因它与您的异常不匹配。结果是,是调试器杀死了我。当我只需rt单击e default.aspx页面和“在browwer中查看”我得到了所需的结果。我想我的调试设置需要进行一些调整吗?我不知道如何在Visual Studio中将其调低。感谢您的回答。我确实需要filterContext.ExceptionHandled=true,因此我将其标记为答案:)
filterContext.ExceptionHandled = true;