2008-08-13 115 views
4

我试图为特定的asp.net网站动态地生成sitemap.xml。动态生成网站地图

我发现一对夫妇的解决方案:

  1. chinookwebs
  2. cervoproject
  3. newtonking

Chinookwebs是伟大的工作,但似乎有点不活跃,现在,它是不可能的,个性化“优先级“和每个页面的”changefreq“标签,它们都从中继承相同的值配置文件。

你们用什么解决方案?

+0

这是另一篇文章,提供代码来完成此操作:http://www.blackbeltcoder.com/Articles/asp/dynamic-sitemaps-in-asp-net – 2011-01-08 02:22:12

回答

7

通常你会用这个HTTP Handler。鉴于...

http://www.yoursite.com/sitemap.axd

...您的处理器将被格式化XML网站地图响应的请求。这个站点地图是从数据库还是其他方法实时生成的,取决于HTTP处理程序的实现。

这里的大致它会是什么样子:

void IHttpHandler.ProcessRequest(HttpContext context) 
{ 
    // 
    // Important to return qualified XML (text/xml) for sitemaps 
    // 
    context.Response.ClearHeaders(); 
    context.Response.ClearContent(); 
    context.Response.ContentType = "text/xml"; 
    // 
    // Create an XML writer 
    // 
    XmlTextWriter writer = new XmlTextWriter(context.Response.Output); 
    writer.WriteStartDocument(); 
    writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9"); 
    // 
    // Now add entries for individual pages.. 
    // 
    writer.WriteStartElement("url"); 
    writer.WriteElementString("loc", "http://www.codingthewheel.com"); 
    // use W3 date format.. 
    writer.WriteElementString("lastmod", postDate.ToString("yyyy-MM-dd")); 
    writer.WriteElementString("changefreq", "daily"); 
    writer.WriteElementString("priority", "1.0"); 
    writer.WriteEndElement(); 
    // 
    // Close everything out and go home. 
    // 
    result.WriteEndElement(); 
    result.WriteEndDocument(); 
    writer.Flush(); 
} 

这个代码可以改善,但是这是基本的想法。

0

生成站点地图的自定义处理程序。

+0

处理程序将负责每个http请求到应用程序和随时重新生成sitemap.xml,这是你的意思吗? – jdecuyper 2008-08-13 03:52:46

0

使用ASP.NET MVC使用.NET XML生成库只是简单地创建了一小段代码,然后将它传递给了一个具有XML控件的视图页面。在代码隐藏中,我将控件与ViewData绑定在一起。这似乎覆盖了视图页面的默认行为以呈现不同的页眉。