未触发异常过滤器

时间:2015-07-11 09:29:54

标签: c# asp.net filter asp.net-web-api custom-exceptions

我想在工作中将ExceptionFilter添加到我的项目中。 所以我在.net 4.5上用VS2013做了一个测试api项目:

  1. web api get操作会抛出自定义异常(具有过滤器属性)

  2. 正在构建的自定义异常构造函数

  3. 过滤异常捕获它和句柄。

  4. 效果很好!

    现在,我去了我的工作项目,该项目正在使用.net 4.5,创建了一个TestController文件,复制 粘贴我的测试项目文件中的代码。 Web Api操作被点击,调用了自定义异常构造函数但未触发异常过滤器。为什么呢?

    这是我的ApiController,ExceptionFilter,CustomException和一些Customer类:

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}"
            ); 
        }
    }
    

    这是我的WebApiConfig:

    public class MvcApplication : HttpApplication
    {
    
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles); 
        }
    
        void Application_Error(object sender, EventArgs e)
        {                        
            //some code here
        }
    
    }
    

    这是我的Global.asax

    {{1}}

    更新:

    刚才意识到当没有触发异常过滤器时,我得到状态码200!

    非常奇怪,因为它毕竟会引发异常。

1 个答案:

答案 0 :(得分:0)

对我有用的解决方案是更改我创建的CustomException(我的代码中的CustomerNotExistsException)继承自Exception基类而不是HttpResponseException。