2012-04-23 58 views
0

我已经在MVC 3应用程序中创建了自定义异常处理程序,不幸的是,如果抛出异常,它将永远不会被打中。我想念什么?ExceptionFilter不处理异常

自定义异常过滤器

public class ExceptionFilter : IExceptionFilter 
{ 
     public void OnException(ExceptionContext filterContext) 
     { 
     //Never executed 
     } 
} 

在Global.asax.cx

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new ExceptionFilter()); //must be before HandleErrorAttribute 
     filters.Add(new HandleErrorAttribute()); 
    } 

的Web.config

<customErrors mode="RemoteOnly" defaultRedirect="/error/default"> 
    <error statusCode="404" redirect="/error/pagenotfound" /> 
</customErrors> 
+0

哪里抛出异常? – 2012-04-23 11:24:37

+0

我曾在两个地方尝试过。 1.导航到不存在的网页。 2.我在执行一些计算的地方分离了线程,如果在那里发生异常,它不会被过滤器处理。 – Tomas 2012-04-23 11:32:36

+0

异常过滤器处理在控制器操作内部抛出的异常。它们不能用于处理整个ASP.NET应用程序中发生的全局异常。 – 2012-04-23 11:33:31

回答

0

如果您导航到一个缺页测试注册过滤器,真正发生的是它试图解决控制器,你会得到一个未处理的异常,抛出一个500.添加a,并且您应该能够捕获其他错误。