Ваш код правильный и должен быть помещен в метод Application_Start
в Global.asax
.Например:
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new Route(
"sitemap.xml", new PageRouteHandler("~/sitemap.aspx")));
}
Однако вам также необходимо убедиться, что файлы * .xml обрабатываются ASP.NET.По умолчанию * .xml файлы просто обслуживаются IIS, а не обрабатываются ASP.NET.Чтобы убедиться, что они обрабатываются ASP.NET, вы можете:
1) Указать runAllManagedModulesForAllRequests="true"
в элементе system.webServer
в web.config
:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
или 2) добавьте «Отображение обработчика» для XML-файлов:
<system.webServer>
<handlers>
<add name="xml-file-handler" path="*.xml" type="System.Web.UI.PageHandlerFactory"
verb="*" />
</handlers>
</system.webServer>
Я проверил это в примере проекта ASP.NET (не MVC) и смог заставить работать маршрутизацию, как вы указали.