2014-11-18 4 views
1

я два маршрута отображается в моем RouteConfig:MVC 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" 
     } 
    ); 
} 

Для URL как

http://example.com/SubFolder/App/Views/OtherFolder/Reports/someReport.html

2-й Маршрут правильно сбрасывает GetReport в ReportsController:

public ActionResult GetReport(string report) { .... } 

Но для URL, как

http://example.com/Content/app.css

Я ожидаю, что первый путь выстрелить метод GetContent в ContentController:

public ActionResult GetContent(string item) { ... } 

, но это не так. Любые идеи, как я могу получить это правильно? В идеале я бы хотел, чтобы любой запрос GET для чего-либо под папкой Content был перенаправлен на ContentController, но я только начинаю с файлов css непосредственно в этой папке.

Я нахожусь на IIS 8.0, MVC 4.0 и используя VS2012, если это имеет значение.

ответ

2

По умолчанию MVC не маршрутизирует статические файлы и просто пытается обслуживать статический файл .css по запрошенному пути. Просто удалите окончание .css и маршрут будет использован.

Редактировать: Чтобы быть яснее, IIS пытается обслуживать эти статические файлы до того, как манипуляция MVC даже начнет работать.

Смежные вопросы