静态文件可能不会被asp.net mvc引擎处理吗?如何让所有的静态文件像css/images/js文件不被asp.net mvc处理?
我可以在IIS级别执行此操作吗? (无需为静态文件创建单独的IIS网站)
静态文件可能不会被asp.net mvc引擎处理吗?如何让所有的静态文件像css/images/js文件不被asp.net mvc处理?
我可以在IIS级别执行此操作吗? (无需为静态文件创建单独的IIS网站)
您需要为不希望通过ASP.NET MVC提供服务的特定类型的文件创建忽略路由。
将以下内容添加到您的路由中,以查看要忽略的文件类型。
下工作的文件根:如果您想将这些组合成
routes.IgnoreRoute("assets/{*pathInfo}");
:
routes.IgnoreRoute("{file}.css");
routes.IgnoreRoute("{file}.jpg");
routes.IgnoreRoute("{file}.gif");
如果你想在一个特定的目录忽略的文件,你可以这样做一个路由,你可以(例如忽略目录中特定类型的文件):
routes.IgnoreRoute("{assets}", new { assets = @".*\.(css|js|gif|jpg)(/.)?" });
这个overload of IgnoreRoute
接受一个url(第一个参数)和一个要忽略的事物的Constraints对象。
由于ASP.NET MVC中的RouteConstraints可以通过多种方式实现(包括正则表达式),所以可以在第二个参数中放置标准正则表达式。
如果你想实现一个自定义约束,there is lots of useful documentation on that subject(比如,如果你的约束在运行时是动态的)。
在方法开始Global.asax.cs
RegisterRoutes
写:
routes.IgnoreRoute("Content/{*pathInfo}");
包含你的静态文件的文件夹的名称替换Content
。
乔治,但是,提供More comprehensive solution
静态文件不是由ASP.NET MVC处理,除非你有一个静态文件的URL匹配的路由。也许你在问关于ASP.NET处理的静态文件,在这种情况下,你不应该使用runAllManagedModulesForAllRequests="true"
。这是一个post与更多的信息。
请注意,@ george-stocker的答案仅适用于根目录下的静态文件!
为了赶上静态文件中的所有可能的目录/子目录,使用忽略与“条件”的规则,就像这样:
routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" });
这个问题不明确,但对于我忽略文件扩展名往往意味着你想在全球范围内做到这一点(包括子目录)。这个答案完成了,而接受的答案没有。 –
为什么你只是做routes.RouteExistingFiles = FALSE;它不应该为存在的文件工作吗? –