即时生成站点地图
时间:2020-03-05 18:39:17 来源:igfitidea点击:
我正在尝试为特定的asp.net网站动态生成一个sitemap.xml。
我找到了几个解决方案:
- chinookwebs
- cervoproject
- 牛顿
Chinookwebs运行良好,但现在似乎不活跃,并且不可能个性化每个页面的" priority"和" changefreq"标签,它们都从配置文件继承相同的值。
你们使用什么解决方案?
解决方案
回答
用于生成站点地图的自定义处理程序。
回答
使用ASP.NET MVC只是使用.NET XML生成库编写了一些代码,然后将其传递给了具有XML控件的视图页。在后面的代码中,我将控件与ViewData绑定在一起。这似乎覆盖了视图页面的默认行为以呈现不同的标题。
回答
通常,我们将为此使用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(); }
可以改进此代码,但这是基本思想。