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

Posted

技术标签:

【中文标题】ASP.NET 路由 - 忽略具有特定扩展名的文件的路由,无论目录如何【英文标题】:ASP.NET Routing - Ignore routes for files with specific extension, regardless of directory 【发布时间】:2011-03-14 18:54:41 【问题描述】:

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

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

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

我尝试了很多不同的组合,但似乎找不到一个不会引发编译器异常或不起作用的组合?

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

以上是关于ASP.NET 路由 - 忽略具有特定扩展名的文件的路由,无论目录如何的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7忽略没有文件扩展名的MapPageRoute

ASP.NET MVC - 路由 - 带有文件扩展名的操作

如何忽略asp.net表单中的路由url路由

具有固定 URI 的 ASP.NET 路由不映射查询字符串参数

Asp.Net Routing:如何忽略多个通配符路由?

asp.net core mvc razor page css未在特定路由上加载