2008-08-13 112 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綁定在一起。這似乎覆蓋了視圖頁面的默認行爲以呈現不同的頁眉。