C# 如何在MVC路由中忽略所有特定的文件扩展名

C# 如何在MVC路由中忽略所有特定的文件扩展名,c#,asp.net-mvc,routing,C#,Asp.net Mvc,Routing,如何配置IgnoreRoute以忽略具有特定扩展名的所有文件,而不管它们位于哪个目录中 如果我这样做,一切正常,我的Flash电影就会播放: routes.Ignore("community/123/plan/456/video/moviename.flv"); 所以“123”和“456”部分是可变的,可以是任意整数。显然,我不想为每部电影都做这些操作,也不需要用变量占位符替换123和456。这只是一种目录类型的示例,整个应用程序中都存储有Flash电影,因此我需要的是一个IgnoreRout

如何配置IgnoreRoute以忽略具有特定扩展名的所有文件,而不管它们位于哪个目录中

如果我这样做,一切正常,我的Flash电影就会播放:

routes.Ignore("community/123/plan/456/video/moviename.flv");
所以“123”和“456”部分是可变的,可以是任意整数。显然,我不想为每部电影都做这些操作,也不需要用变量占位符替换123和456。这只是一种目录类型的示例,整个应用程序中都存储有Flash电影,因此我需要的是一个IgnoreRoute值,该值将忽略扩展名为.flv的文件,无论这些文件在层次结构中的何处

我尝试了以下方法:

routes.IgnoreRoute("{file}.flv");
routes.IgnoreRoute("(.*).flv(.*)"); // Yeah I know, I'm horrible at RegEx

到目前为止,我唯一能做的就是专门将完整的相对路径传递给FLV文件。有什么建议吗?

查看Phil Haack的这篇文章:

长话短说,我们不希望路由尝试路由请求 用于静态文件,如图像。不幸的是,这给我们造成了巨大的损失 当我们想起ASP.NET的许多特性使 请求磁盘上不存在的.axd文件

为了解决这个问题,我们在RouteCollection上加入了一个新的扩展方法, IgnoreRoute,创建映射到StopRoutingHandler的路线 路由处理程序(实现IRoutHandler的类)。实际上,任何 与“忽略路由”匹配的请求将被路由和 正常的ASP.NET处理将基于现有的http处理程序进行 映射

因此,在我们的默认模板中,您会注意到我们有以下内容 已定义路由

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
这将处理标准的.axd请求

我们只允许一条“一网打尽”的路线,而且必须在比赛结束时进行 网址。但是,您可以采取以下方法。在这个例子中,我 添加了以下两条路线

routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"}); 
我在这里做的是一个 Eilon向我展示了将所有URL映射到这些路由的技术, 然后通过约束限制要忽略的路由 字典。因此,在这种情况下,这些路由将匹配(因此忽略) favicon.ico的所有请求(无论哪个目录)以及 请求一个.aspx文件。因为我们告诉routing忽略这些 请求时,将进行这些请求的正常ASP.NET处理


routes.IgnoreRoute(“{allflv}”,新的{allflv=@.*\.flv(/)?”})@如果评论不足以解释你的情况,你能解释一下你的情况吗?对不起,这里有我的位置,基本是一样的。可能重复的