![](/img/trans.png)
[英]How to exclude a specific path in ASP.NET Core 5 so that the request is processed by ASP.NET and not by the static files?
[英]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.