⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sitemap.cs

📁 个人博客系统
💻 CS
字号:
#region Using

using System;
using System.Xml;
using System.Web;
using BlogEngine.Core;

#endregion

namespace BlogEngine.Core.Web.HttpHandlers
{
  /// <summary>
  /// A blog sitemap suitable for Google Sitemap as well as
  /// other big search engines such as MSN/Live, Yahoo and Ask.
  /// </summary>
  public class SiteMap : IHttpHandler
  {

    /// <summary>
    /// Enables processing of HTTP Web requests by a custom HttpHandler that 
    /// implements the <see cref="T:System.Web.IHttpHandler"></see> interface.
    /// </summary>
    /// <param name="context">An <see cref="T:System.Web.HttpContext"></see> 
    /// object that provides references to the intrinsic server objects 
    /// (for example, Request, Response, Session, and Server) used to service HTTP requests.
    /// </param>
    public void ProcessRequest(HttpContext context)
    {
      using (XmlWriter writer = XmlWriter.Create(context.Response.OutputStream))
      {
        writer.WriteStartElement("urlset", "http://www.google.com/schemas/sitemap/0.84");

        // Posts
        foreach (Post post in Post.Posts)
        {
          writer.WriteStartElement("url");
          writer.WriteElementString("loc", post.AbsoluteLink.ToString());
          writer.WriteElementString("lastmod", post.DateModified.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture));
          writer.WriteElementString("changefreq", "monthly");
          writer.WriteEndElement();
        }

        // Pages
        foreach (Page page in Page.Pages)
        {
          writer.WriteStartElement("url");
          writer.WriteElementString("loc", page.AbsoluteLink.ToString());
          writer.WriteElementString("lastmod", page.DateModified.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture));
          writer.WriteElementString("changefreq", "monthly");
          writer.WriteEndElement();
        }

        // Archive
        writer.WriteStartElement("url");
        writer.WriteElementString("loc", Utils.AbsoluteWebRoot.ToString() + "archive.aspx");
        writer.WriteElementString("lastmod", DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture));
        writer.WriteElementString("changefreq", "daily");
        writer.WriteEndElement();

        // Contact
        writer.WriteStartElement("url");
        writer.WriteElementString("loc", Utils.AbsoluteWebRoot.ToString() + "contact.aspx");
        writer.WriteElementString("lastmod", DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture));
        writer.WriteElementString("changefreq", "monthly");
        writer.WriteEndElement();

        // Blog
        if (Page.GetFrontPage() != null)
        {
          writer.WriteStartElement("url");
          writer.WriteElementString("loc", Utils.AbsoluteWebRoot.ToString() + "blog.aspx");
          writer.WriteElementString("lastmod", DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture));
          writer.WriteElementString("changefreq", "daily");
          writer.WriteEndElement();
        }

        writer.WriteEndElement();
      }

      context.Response.ContentType = "text/xml";
    }

    /// <summary>
    /// Gets a value indicating whether another request can use the <see cref="T:System.Web.IHttpHandler"></see> instance.
    /// </summary>
    /// <value></value>
    /// <returns>true if the <see cref="T:System.Web.IHttpHandler"></see> instance is reusable; otherwise, false.</returns>
    public bool IsReusable
    {
      get { return false; }
    }

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -