2010-08-23 50 views
2

我有一个使用路由的ASP.NET 4 WebForms应用程序。我想搭上404对不存在路线:ASP.NET 4路由捕获全部

RouteTable.Routes.MapPageRoute("404", "{*url}", "~/error"); 

问题是,这也将导致映射/errorImageHandler.ashxResource.axd页面。

所以我补充一点:

RouteTable.Routes.Ignore("{resource}.axd"); 
    RouteTable.Routes.Ignore("{handler}.ashx"); 

但这只是忽略Resource.axd在根目录下,而不是在例如/scripts/Resource.axd

我该如何做到这一点?或者我应该设置什么Contraints来捕获所有PageRoute,因此它只会捕获目录?

回答

0

你试过这个吗?

RouteTable.Routes.Ignore("{*resource}.axd"); 
RouteTable.Routes.Ignore("{*handler}.ashx"); 
0

我发现了一个混合的WebForms/MCV3应用程序带来了我这个问题的类似问题。基本上只有根级别的axd文件被正确处理,除此之外的任何东西都试图被路由到控制器。

我的情况也许不同,但最终我发现做这样的工作:

routes.Ignore("{*allaxd}", new { allaxd = @".*\.axd(/.*)?" }); 

我不知道很多关于忽略和IgnoreRoutes所以有可能是一个更好的/贪心不足的解决方案,但它正在工作。