У меня проблемы с маршрутами, которые не совпадают, когда в них содержатся файлы с определенными расширениями. Я подозреваю, что это может быть проблема с 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?