Asp.net mvc 动态生成sitemap.xml

Asp.net mvc 动态生成sitemap.xml,asp.net-mvc,webforms,sitemap,Asp.net Mvc,Webforms,Sitemap,我已经实现了一个站点地图,它是使用所描述的技术动态生成的 因为我的站点是一个WebForms应用程序,所以我的站点地图URL最终是www.mydomain.com/sitemap.aspx 这很好,我可以使用搜索引擎网站管理员工具告诉他们我的网站地图的URL。然而,较小的搜索引擎可能不知道在哪里可以找到这个文件。如果我的动态生成的站点地图可以位于www.mydomain.com/sitemap.xml,那就更好了。这是站点地图的标准URL 生成与我现在所做的相同的站点地图数据但将其显示为文件si

我已经实现了一个站点地图,它是使用所描述的技术动态生成的

因为我的站点是一个WebForms应用程序,所以我的站点地图URL最终是www.mydomain.com/sitemap.aspx

这很好,我可以使用搜索引擎网站管理员工具告诉他们我的网站地图的URL。然而,较小的搜索引擎可能不知道在哪里可以找到这个文件。如果我的动态生成的站点地图可以位于www.mydomain.com/sitemap.xml,那就更好了。这是站点地图的标准URL

生成与我现在所做的相同的站点地图数据但将其显示为文件sitemap.xml的最简单方法是什么。我可以使用路由吗,还是需要一个自定义HTTP处理程序


我正在使用webforms,但也有使用ASP.NET MVC的站点,因此我非常有兴趣找到在这两种平台上实现这一点的最佳技术。

对于webforms,您可以使用HttpModule,请查看

对于MVC,请使用路由:

routes.MapRoute("Sitemap", 
                "sitemap.xml",
                new { controller = "Home", action = "Sitemap" })

对于Webforms,您也可以如上所述更新您的web.config,您只需使用普通的aspx或ascx页面,然后使用rewrite:-)(我使用.net 4.0)

e、 g



Hmm。。。MVC解决方案在这里似乎很理想。Webforms解决方案,没有那么多(一个第三方控件,它要求IIS运行,并且可能在未来的ASP.NET版本中工作,也可能不工作)。我确实计划把网站改写成MVC,但不是很快。谢谢。如果OP使用的是IIS 7或更高版本,则web服务器有一个本机。它方便多了。没有编码。web.config中只有几行。@Oybek是的,我们正在使用最新的软件。看来我会感兴趣的。(虽然我使用的是共享主机,可能无法访问所有IIS设置。)谢谢。其次,如果你有IIS7+的话,请使用Url重写。这看起来很有希望,但我无法让它工作。这个特定的站点仍然是使用VisualStudio2010构建的。我不知道这是否与此有关。无论如何,我玩过这个和
routes.MapPageRoute(“Sitemap”,“Sitemap.xml”,“~/Sitemap.aspx”)似乎工作正常。仍在测试中…我安装了URL重写并使用了此XML,忽略了Visual Studio警告,效果非常好。
<system.webServer>
<rewrite>
  <rules>
    <rule name="Main Sitemap" stopProcessing="true">
      <match url="^sitemap.xml"/>
      <action type="Rewrite" url="sitemap/sitemap.aspx" appendQueryString="false"/>
    </rule>
  </rules>
</rewrite>
</system.webServer>