是否有可能asp.net mvc引擎无法处理静态文件?
我可以在IIS级别执行此操作吗?(没有为静态文件创建一个单独的IIS网站)
Geo*_*ker 30
您需要为不希望通过ASP.NET MVC提供的特定类型的文件创建忽略路由.
对于要忽略的文件类型,将以下内容添加到路由中.
以下适用于根目录中的文件:
routes.IgnoreRoute("{file}.css");
routes.IgnoreRoute("{file}.jpg");
routes.IgnoreRoute("{file}.gif");
Run Code Online (Sandbox Code Playgroud)
如果要忽略特定目录中的文件,可以执行以下操作:
routes.IgnoreRoute("assets/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
如果要将这些组合成一个路径,则可以(例如,忽略目录中的特定类型的文件):
routes.IgnoreRoute("{assets}", new { assets = @".*\.(css|js|gif|jpg)(/.)?" });
Run Code Online (Sandbox Code Playgroud)
这个重载IgnoreRoute接受一个url(第一个参数)和一个要忽略的事物的Constraints对象.
由于ASP.NET MVC中的RouteConstraints可以通过多种方式实现(包括正则表达式),因此可以将标准正则表达式放在第二个参数中.
如果要实现自定义约束,那么有很多关于该主题的有用文档(例如,如果您的约束在运行时是动态的).
Ale*_*lex 21
小心,@ george-stocker的答案仅适用于根目录中的静态文件!
要捕获所有可能的目录/子目录中的静态文件,请使用带有"条件"的忽略规则,如下所示:
routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" });
Run Code Online (Sandbox Code Playgroud)