【发布时间】:2011-03-14 18:54:41
【问题描述】:
假设我想删除具有特定文件扩展名的文件的所有映射路由。
RouteTable.Routes.Ignore("{root}.hello");
适用于根目录中扩展名为 .hello 的任何文件,但是一旦我进入任何子文件夹,则不会应用“忽略”规则。
我尝试了很多不同的组合,但似乎找不到一个不会引发编译器异常或不起作用的组合?
【问题讨论】:
标签: c# asp.net asp.net-mvc routing
假设我想删除具有特定文件扩展名的文件的所有映射路由。
RouteTable.Routes.Ignore("{root}.hello");
适用于根目录中扩展名为 .hello 的任何文件,但是一旦我进入任何子文件夹,则不会应用“忽略”规则。
我尝试了很多不同的组合,但似乎找不到一个不会引发编译器异常或不起作用的组合?
【问题讨论】:
标签: c# asp.net asp.net-mvc routing
请查看Phil's blog 关于此。基本上,你会做这样的事情:
示例 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()));
【讨论】: