Я пытаюсь разобраться с маршрутизацией атрибутов в MVC.
Первоначально маршрутизация для моего контроллера карты сайта была следующей:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "SitemapXml",
url: "sitemap.xml",
defaults: new { controller = "Sitemap", action = "Index" }
// Additional mappings...
}
}
Это прекрасно работает.Но затем я попытался закомментировать вышеприведенную маршрутизацию SitemapXml
и вместо этого добавить атрибут в свой контроллер.
// GET: Sitemap
[Route("sitemap.xml")]
public ActionResult Index()
{
// Generate sitemap
}
Я также добавил следующую строку в конце RegisterRoutes
:
routes.MapMvcAttributeRoutes();
Но теперь, когда я перехожу на domain.com/sitemap.xml, я получаю сообщение об ошибке «страница не найдена».
Вопросы:
- Какие шаги мне не хватает, чтобы получить мойработает ли атрибут маршрутизации?
- Поскольку сопоставления теперь можно указывать в двух местах (в виде атрибутов или задавать непосредственно в
RouteCollection
), что происходит, когда эти два места противоречат друг другу?