ASP.NET路由 – 忽略具有特定扩展名的文件的路由,而不管目录如何

假设我想删除具有特定文件扩展名的文件的任何映射路由。

RouteTable.Routes.Ignore("{root}.hello"); 

适用于根目录中具有扩展名.hello任何文件,但是只要进入任何子文件夹,就不会应用“忽略”规则。

我已经尝试了很多不同的组合,但似乎没有得到一个不抛出编译器exception,或无法工作?

查看Phil的博客 。 基本上,你会做这样的事情:

示例1:不要对所有.aspx文件的任何请求执行路由:

 routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"}); 

示例2:不要对favicon.ico的任何请求执行路由

 routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"}); 

如果您使用的是ASP.NET MVC,请使用IgnoreRoutes(MVC扩展方法)

 Routes.IgnoreRoute("{*foo*}", new { foo = @"someregextoignorewhatyouwant"}); 

如果您使用的是ASP.NET Web窗体,请使用实现IRouteHandler的StopRoutingHandler 。

 routes.Add(new Route("*someregextoignorewhatyouwant*", new StopRoutingHandler()));