返回首页

创建RSS提要:在ASP.NET |
最近,它发生,我认为我的网站之一,可能会受益于一个RSS提要。不过,我真的没AOT了解RSS提要。我理解的基本目的,但真的没有,他们是如何工作的线索。词一样,Äúsyndication??被扔周围描述RSS提要时,我想象它涉及某种形式的代码,不断发送数据到一些神秘的位置。
幸运的是,了解RSS提要是很容易的,并创建自己的RSS饲料ASP.NET是一件轻而易举的。 RSS代表真正简单的整合。它提供了一个标准,为您的信息提供给任何人想请求您的供稿。我的一个网站是一个共享软件网站,我认为,一个饲料将允许用户保持联系,我的网站,并使其更容易,他们将返回。此外,一个RSS feed,使他们能够做到不签约,甚至给我他们的电子邮件地址。
,这些天,星光大道变得更容易为用户使用饲料,因为越来越多的软件开始支持他们。例如,当你输入网址到Microsoft Internet Explorer的饲料,信息是现在格式化专为饲料。微软Live Mail还对饲料的直接支持。也有一些的网站,可以帮助您订阅并查看RSS提要。
RSS提要是一个简单的XML文件在您的网站符合RSS规范。当然,因为饲料,目的是要不断更新,你通常要生成这个文件上飞行时,它要求。而且,当然,ASP.NET使得这很容易做到的。
清单1显示了我的供稿源文件。这是一个正常的,每天的ASPX文件和你所看到的文件的全部内容。首先要注意的是在第二行的OutputCache声明。当您使用OutputCache,这个给定的时间内的文件的请求将简单地返回以前的结果的副本。时间是在几秒钟内,所以如果这个文件的要求在两分钟内发生,代码将无法运行第二次请求。相反,ASP.NET将简单地返回的第一个请求返回相同的数据。由于页面运行潜在的冗长的代码,使一个潜在的庞大的数据库命中,这将确保该网站没有按,AOT陷下交通繁忙。


<%@ Page Language="C#" AutoEventWireup="true" %>

<%@ OutputCache Duration="120" VaryByParam="none" %>

<%@ Import Namespace="System.Xml" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<%@ Import Namespace="SoftCircuits" %>

<script runat="server">

  /// <summary>

  /// Create RSS Feed of newest submissions

  /// </summary>

  /// <param name="sender"></param>

  /// <param name="e"></param>

  protected void Page_Load(object sender, EventArgs e)

  {

    // Clear any previous response

    Response.Clear();

    Response.ContentType = "text/xml";



    //

    XmlTextWriter writer = new XmlTextWriter(Response.OutputStream,

      Encoding.UTF8);

    writer.WriteStartDocument();



    // The mandatory rss tag

    writer.WriteStartElement("rss");

    writer.WriteAttributeString("version", "2.0");



    // The channel tag contains RSS feed details

    writer.WriteStartElement("channel");

    writer.WriteElementString("title", "File Parade's Newest Submissions");

    writer.WriteElementString("link", "http://www.fileparade.com");

    writer.WriteElementString("description",

      "The latest freeware and shareware downloads from File Parade.");

    writer.WriteElementString("copyright",

      String.Format("Copyright {0} SC Web Group. All rights reserved.", DateTime.Today.Year));



    // File Parade image    

    writer.WriteStartElement("image");

    writer.WriteElementString("url",

      "http://www.fileparade.com/Images/logo88x31.png");

    writer.WriteElementString("title",

      "File Parade Freeware and Trialware Downloads");

    writer.WriteElementString("link",

      "http://www.fileparade.com");

    writer.WriteEndElement();



    // Objects needed for connecting to the SQL database

    using (SqlDataReader reader = DataHelper.ExecProcDataReader("GetRssFeed"))

    {

      // Loop through each item and add them to the RSS feed

      while (reader.Read())

      {

        writer.WriteStartElement("item");

        writer.WriteElementString("title",

          EncodeString(String.Format("{0} {1} by {2}",

          reader["Title"], reader["Version"],

          reader["Company"])));

        writer.WriteElementString("description",

          EncodeString((string)reader["Description"]));

        writer.WriteElementString("link",

          String.Format("http://www.fileparade.com/Listing.aspx?id={0}",

          reader["ID"]));

        writer.WriteElementString("pubDate",

          ((DateTime)reader["ReleaseDate"]).ToShortDateString());

        writer.WriteEndElement();

      }

    }



    // Close all tags

    writer.WriteEndElement();

    writer.WriteEndElement();

    writer.WriteEndDocument();

    writer.Flush();

    writer.Close();



    // Terminate response

    Response.End();

  }



  protected string EncodeString(string s)

  {

    s = HttpUtility.HtmlEncode(s);

    return s.Replace("\r\n", "<br />\r\n");

  }



</script>
清单1:RSS订阅
接下来是我的报关单,进口所需的命名空间。这里没有什么特别的,Äîjust访问数据库所需的声明。注意,此代码韩元,AOT运行你作为上市。它包括我SoftCircuits命名空间,其中包含一些内部数据库例程。你,Äôll需要更换自己的数据库代码。这是有道理的,因为你,Äôll返回自己的数据。
代码的核心是放置在Page_Load事件处理程序。正如你所知道的,这段代码被称为页面时,首先要求。第一步是清除任何以前的输出内容的响应。请记住,我们正在创建一个XML文件,我们唐,AOT想要返回其他任何内容。下一步,我们设置了一些头文件,这样用户代理可以看到,我们正在返回什么类型的内容。
从这里,我们继续创建一个XmlTextWriter和其附加到输出流,我们可以开始创建我们的输出。我们开始与一些强制性的RSS标签,Äîthese需要确定我们作为一个RSS文件的内容。接下来,我们添加一些强制性的标签,说明我们的渠道。这提供了额外的描述性信息,关于我们的内容。接下来,我添加了一些可选的标签,它指定了一个小图像和相关数据。
之后,我们终于可以开始输出我们的实际数据。我的代码使用一个内部所谓DataHelper.ExecProcReader的方法,它调用一个存储过程来获取我的数据。您将需要更换自己的代码来回报你是连锁的任何数据。我的例程只是简单地通过它返回的数据中的每一行返回一个SqlDataReader和我循环。
请注意,我之前执行写他们的一些修改,我的文本字段。对于我来说,这段文字是从不同的作者提交,AOT我不希望他们自己的HTML标记。因此,我呼吁的HTMLEncode,这会导致标记出现,因为它是代替书面允许它修改的布局,格式,或创建链接。配售LT,然后我插入我自己的标记; BR / GT;只要有一个换行符。这确保换行符会出现用户。我要指出,WriteElementString()将HTML编码的字符串被写入。这可以防止干扰的XML标记的标记。注意:数据将被解码的HTML时,它是只读。所以你只需要与这个烂摊子,如果你要调整你返回的数据。
然后刷新XML编写好措施,并终止我们的反应。同样,我们正在创建一个XML文件,这最后一步,可以防止意外地被包含在响应中任何其他输出。
如果你Äôre像我一样,你可能会有点惊讶多么容易,这真的是。要允许有人来检查你的饲料,只需提供本网页的URL。使用软件的支持饲料,他们可以即时访问您的数据在一个方便的格式。而且,当然,更有可能返回到您的网站时,他们需要更多的信息。|乔纳森木材

回答