ASP.NET路由 - 忽略具有特定扩展名的文件的路由,无论目录如何

时间:2010-07-12 12:06:14

标签: c# asp.net asp.net-mvc routing

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

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

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

我尝试了很多不同的组合,但似乎无法获得一个不会抛出编译器异常或无法工作的组合?

2 个答案:

答案 0 :(得分:15)

请查看Phil's blog。基本上,你会做这样的事情:

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

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

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

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

答案 1 :(得分:4)

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

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

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

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