4

我正在尝试为特定的 asp.net 网站动态生成 sitemap.xml。

我找到了几个解决方案:

  1. 奇努克网
  2. cervoproject
  3. 牛顿

Chinookwebs 运行良好,但现在似乎有点不活跃,并且无法个性化每个页面的“priority”和“changefreq”标签,它们都从配置文件中继承相同的值。

你们使用什么解决方案?

4

3 回答 3

7

通常你会为此使用HTTP 处理程序。鉴于请求...

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();
}

这段代码可以改进,但这是基本思想。

于 2008-08-13T07:19:07.713 回答
0

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

于 2008-08-13T00:48:30.373 回答
0

使用 ASP.NET MVC 只需使用 .NET XML 生成库快速生成一些代码,然后将其传递给具有 XML 控件的视图页面。在代码隐藏中,我将控件与 ViewData 绑定在一起。这似乎覆盖了视图页面的默认行为以呈现不同的标题。

于 2008-08-13T01:12:17.970 回答