Маршрутизация Asp.net MVC не соответствует некоторым расширениям файлов

У меня проблемы с маршрутами, которые не совпадают, когда в них содержатся файлы с определенными расширениями. Я подозреваю, что это может быть проблема с IIS, но я не могу ее отследить.

Во-первых, у меня отключен RouteExistingFiles:

routes.RouteExistingFiles = false;

Затем у меня есть следующий маршрут:

routes.MapRoute("", "category/{category}.aspx", new { controller = "Category", action = "View" });

и следующий URL-адрес не соответствует этому маршруту:

http://mysite/category/test.aspx

Но, если я удалю расширение файла и изменю маршрут к:

routes.MapRoute("", "category/{category}", new { controller = "Category", action = "View" });

Тогда приведенный выше URL-адрес соответствует {category}, установленному на «test.aspx»

У меня также есть такая же проблема с этим маршрутом:

routes.MapRoute("sitemap", "sitemap.xml", new { controller = "Resource", action = "Sitemap" });

Странно то, что у меня нет этой проблемы со всеми маршрутами с расширениями файлов. Мне кажется, что следующие маршруты работают нормально:

routes.MapRoute("", "favicon.ico", new { controller = "Resource", action = "Favicon" });
routes.MapRoute("", "min.css", new { controller = "Resource", action = "Css" });
routes.MapRoute("", "min.js", new { controller = "Resource", action = "JavaScript" });
routes.MapRoute("", "rsd.xml", new { controller = "MetaWeblog", action = "Rsd" });

Есть ли что-то, что мне следует знать о расширениях .aspx и .xml? Может ли это быть проблемой IIS? Есть ли лучший способ отладить это, чем просто использовать RouteDebugger?

8
задан Luke Foust 30 May 2012 в 15:15
поделиться