我想在工作中将ExceptionFilter添加到我的项目中。 所以我在.net 4.5上用VS2013做了一个测试api项目:
web api get操作会抛出自定义异常(具有过滤器属性)
正在构建的自定义异常构造函数
过滤异常捕获它和句柄。
效果很好!
现在,我去了我的工作项目,该项目正在使用.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!
非常奇怪,因为它毕竟会引发异常。
答案 0 :(得分:0)
对我有用的解决方案是更改我创建的CustomException(我的代码中的CustomerNotExistsException)继承自Exception基类而不是HttpResponseException。