繁体   English   中英

如何使所有静态文件如css / images / js文件不被asp.net mvc处理?

[英]How to make all static files like css/images/js files not be processed by asp.net mvc?

是否有可能asp.net mvc引擎无法处理静态文件?

我可以在IIS级别执行此操作吗? (没有为静态文件创建一个单独的IIS网站)

您需要为不希望通过ASP.NET MVC提供的特定类型的文件创建忽略路由。

对于要忽略的文件类型,将以下内容添加到路由中。

以下适用于根目录中的文件:

routes.IgnoreRoute("{file}.css");
routes.IgnoreRoute("{file}.jpg");
routes.IgnoreRoute("{file}.gif");

如果要忽略特定目录中的文件,可以执行以下操作:

routes.IgnoreRoute("assets/{*pathInfo}");

如果要将这些组合成一个路径,则可以(例如,忽略目录中的特定类型的文件):

routes.IgnoreRoute("{assets}", new { assets = @".*\.(css|js|gif|jpg)(/.)?" });

IgnoreRoute这个重载接受一个url(第一个参数)和一个要忽略的事物的Constraints对象。

由于ASP.NET MVC中的RouteConstraints可以通过多种方式实现(包括正则表达式),因此可以将标准正则表达式放在第二个参数中。

如果要实现自定义约束, 那么有很多关于该主题的有用文档 (例如,如果您的约束在运行时是动态的)。

小心,@ george-stocker的答案仅适用于根目录中的静态文件

要捕获所有可能的目录/子目录中的静态文件,请使用带有“条件”的忽略规则,如下所示:

routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" });

除非您的路由与静态文件的URL匹配,否则ASP.NET MVC不会处理静态文件。 也许你问的是ASP.NET处理的静态文件,在这种情况下你不应该使用runAllManagedModulesForAllRequests="true" 这是一篇包含更多信息的帖子

在方法RegisterRoutes开头的Global.asax.cs中写下以下内容:

routes.IgnoreRoute("Content/{*pathInfo}");

使用包含静态文件的文件夹名称替换Content

然而,乔治提供了更全面的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM