我在RouteConfig中映射了两个路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Content",
url: "Content/{item}.css",
defaults: new
{
controller = "Content",
action = "GetContent"
}
);
routes.MapRoute(
name: "Reports",
url: "SubFolder/App/Views/OtherFolder/Reports/{report}.html",
defaults: new
{
controller = "Reports",
action = "GetReport"
}
);
}
对于像
这样的网址http://example.com/SubFolder/App/Views/OtherFolder/Reports/someReport.html
第二条路线正确触发GetReport
中的ReportsController
方法:
public ActionResult GetReport(string report) { .... }
但是对于像
这样的网址我希望第一条路线能够触发GetContent
中的ContentController
方法:
public ActionResult GetContent(string item) { ... }
但事实并非如此。有什么想法我怎么能正确路由?理想情况下,我希望Content
文件夹下的任何GET请求都可以路由到ContentController
,但我只是直接从该文件夹中的css文件开始。
我在IIS 8.0,MVC 4.0上,如果有所作为,请使用VS2012。
答案 0 :(得分:2)
默认情况下,MVC不会路由静态文件,只是尝试在请求的路径下提供静态.css文件。 只需删除.css结尾,即可使用该路径。
编辑:为了更清楚,IIS尝试在MVC路由处理之前提供服务这些静态文件。