MVC Catch Весь маршрут не работает - PullRequest
2 голосов
/ 18 сентября 2009

Мой первый маршрут:

  //  Should work for /Admin, /Admin/Index, /Admin/listArticles
  routes.MapRoute(
      "Admin",                                              // Route name
      "Admin/{action}",                           // URL with parameters
      new { controller = "Admin", action = "Index" }  // Parameter defaults
  );

не разрешает маршрут (я использую отладчик маршрута Фила Хаака ), и даже последний маршрут, «Catch All», не работает:

  //Maps any completely invalid routes to ErrorController.NotFound
  routes.MapRoute("Catch All", "{*path}",
      new { controller = "Error", action = "NotFound" }
  );

Если я перехожу к /Admin/listArticles, это работает, но /Admin дает мне Error 403.15 "The Web server is configured to not list the contents of this directory." Это наводит меня на мысль, что при поиске физического файла в каталоге маршрутизация не используется?

Это простая проблема низкоуровневого маршрута, но я не могу заставить ее работать, и все дают мне ссылки для чтения (да, я знаю, что MSDN существует), но никаких реальных ответов. Я исследовал маршруты и пытался, но я публикую это, потому что я не могу заставить его работать, любая помощь, ответы?

Ответы [ 3 ]

1 голос
/ 24 сентября 2009

Ответ на мой вопрос состоял в том, что у меня был маршрут с именем / Admin, и я записал свой журнал ошибок в каталог / Admin / Error. Кажется, что нет никакой перегрузки, чтобы указать, должен ли маршрут быть разрешен или он является частью физического каталога.

1 голос
/ 19 сентября 2009

Возможно, проблема в том, что вы добавили этот маршрут ниже маршрута по умолчанию, все пользовательские маршруты должны быть добавлены выше маршрута по умолчанию.

0 голосов
/ 23 сентября 2009

Используете ли вы IIS 6.0? Если так, то это должно выглядеть так ...

  //  Should work for /Admin, /Admin/Index, /Admin/listArticles
  routes.MapRoute(
      "Admin",                                              // Route name
      "Admin.mvc/{action}",                           // URL with parameters
      new { controller = "Admin", action = "Index" }  // Parameter defaults
  );

Где вам нужно установить mvc в качестве расширения приложения

...