Я пытаюсь динамически создать карту сайта для своего сайта, и я не хочу, чтобы она была (я считаю, что это необходимо) расположена на корневом уровне, т.е. Domain.com/sitemap.xml
Пока у меня есть результат действия в домашнем контроллере, такой как:
public ActionResult SiteMap()
{
...
return this.Content(xml, "text/xml");
}
Это прекрасно работает для создания файла, но он находится по адресу Domain.com/Home/Sitemap, и я понимаю, что карта сайта должна находиться на корневом уровне. Есть ли способ переписать URL-адрес или добавить новый маршрут для него в файле Global.asax? По умолчанию файл Global.asax содержит это:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Так что кажется, что это может быть место, где можно добавить что-то вроде проверки, если запрошенный маршрут - Sitemap.xml, и просто перенаправить его в Home / sitemap (или просто обслуживать карту сайта прямо там). Я не уверен, как это сделать, если это возможно, поскольку я никогда не возился с разделом RegisterRoutes.
Другая проблема, которая может возникнуть, - это расширение .xml, я думаю, что IIS подумает, что это файл на диске, и все маршрут будет игнорироваться.
Я иду по правильному пути или есть лучший способ сделать это? Или это невозможно, и мне просто нужно физически создать файл?
Редактировать (решено)
Мне просто пришло в голову, что я думал об этом неправильно. Все, что мне нужно было бы сделать - это создать / обновить файл карты сайта и сохранить его в /sitemap.xml с периодичностью или при каждом добавлении страницы. Я не могу поверить, что это не было очевидно для меня.