无法弄清楚如何将我的NON-MVC站点从sitemap.xml路由到另一个.aspx页面

mas*_*ary 4 asp.net routing routes sitemap.xml

在搜索谷歌时,MVC网站的唯一解决方案就出现了.我的asp.net 4.0站点不是MVC.我希望对sitemap.xml的请求加载另一个动态.aspx页面,以便我可以动态生成谷歌链接.

我花了几个小时搜索,如果你知道我在哪里可以找到答案,请告诉我.

我试过用

RouteTable.Routes.Add("SitemapRoute", new Route("sitemap.xml", new PageRouteHandler("~/sitemap.aspx")))
Run Code Online (Sandbox Code Playgroud)

rsb*_*rro 6

您的代码是正确的,应该放在Application_Start方法中Global.asax.例如:

void Application_Start(object sender, EventArgs e) 
{
    RouteTable.Routes.Add(new Route(
        "sitemap.xml", new PageRouteHandler("~/sitemap.aspx")));
}
Run Code Online (Sandbox Code Playgroud)

但是,您还需要确保ASP.NET处理*.xml文件.默认情况下,*.xml文件将由IIS提供,而不由ASP.NET处理.要确保它们由ASP.NET处理,您可以:

1)在您runAllManagedModulesForAllRequests="true"system.webServer元素中指定web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

或2)为.xml文件添加"处理程序映射":

<system.webServer>
    <handlers>
      <add name="xml-file-handler" path="*.xml" type="System.Web.UI.PageHandlerFactory"
           verb="*" />
    </handlers>
  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

我在一个示例ASP.NET(非MVC)项目中对此进行了测试,并且能够使路由按指定的方式工作.