آموزش ایجاد rss در asp.net
آموزش ایجاد rss در asp.net
در این پست به صورت کامل آموزش ساخت rss در Asp.Net را قرار داده ایم.
در پست های قبلی آموزش ایجاد صفحات پویا در Asp.Net و نمایش آنها و همچنین ایجاد sitemap به صورت پویا در Asp.Net را توضیح دادیم. در این قسمت جهت کاملتر شدن این آموزش ها و همچنین نوشتن یک مثال کامل از این آموزش ها.
RSS مخفف Really Simple Syndication میباشد که بشما اجازه میدهد محتویات سایت خود را دسته بندی کرده و با یک فرمت سریع و استاندارد تیتر مقالات و اخبار سایت خود را در دسترس دیگران قرار دهید. فرمت فایل های RSS همان XML است. و بصورت اتوماتیک آپدیت میشود.
بدون وجود RSS کاربران باید هر روز سایت شما را چک کنند تا بتوانند از تازه های سایت شما باخبر شوند . اما با این تکنولوژی ، کاربران ، RSS چندین سایت را در یک برنامه RSS aggregator (یا RSS خوان) در کنار هم می بینند و تایتل نوشته های اخیر سایت شما را بدون مراجعه به سایت شما مشاهده میکنند.
ساختار یک rss به صورت زیر می باشد.
<?xml version=\"1.0\" encoding=\"utf-8\"?> <rss version=\"2.0\"> <channel> <title></title> <link></link> <description></description> <language></language> <ttl></ttl> <copyright></copyright> <lastBuildDate></lastBuildDate> <item> <title></title> <link></link> <description></description> <author></author> <pubDate></pubDate> </item> </channel> </rss>
ابتدا یک فایل rss.aspx در ریشه وب سایت خود ایجاد کنید توجه کنید که هنگام ایجاد تیک دو گزینه place code in separate file و همچنین select master page را برداشته باشید.
کد های داخل آن را به صورت زیر تغییر دهید توجه کنید که هیچ کدی به غیر از این کدها زیر داخل آن نباشد.
<%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <script runat="server"> void Page_Load(object source, EventArgs e) { if (Cache["Rss"] == null) { Response.ContentType = "text/xml"; Response.ContentEncoding = Encoding.UTF8; string channelTitle = "iranganj.ir Headlines"; string channelLink = "http://iranganj.ir"; string channelDesc = "Get latest articles and information about ASP, " + "ASP.NET and JSP from iranganj.ir."; string language = "en-us"; int ttl = 60; // Time to live, in minutes. string copyright = "Copyright 2015 - " + DateTime.Now.Year + " iranganj.ir, All Rights Reserved."; string connstr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; string sql = "SELECT TOP 10 PostID,PageName,Title, MetaDescription, InsertDateTime, Author FROM Pages ORDER BY InsertDateTime DESC"; StringBuilder buffer = new StringBuilder(); buffer.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"); buffer.Append("<rss version=\"2.0\">\r\n"); buffer.Append("<channel>\r\n"); buffer.Append("<title>").Append(channelTitle).Append("</title>\r\n"); buffer.Append("<link>").Append(channelLink).Append("</link>\r\n"); buffer.Append("<description>").Append(channelDesc); buffer.Append("</description>\r\n"); buffer.Append("<language>").Append(language).Append("</language>\r\n"); buffer.Append("<ttl>").Append(ttl).Append("</ttl>\r\n"); buffer.Append("<copyright>").Append(copyright); buffer.Append("</copyright>\r\n"); using (SqlConnection con = new SqlConnection(connstr)) using (SqlCommand cmd = new SqlCommand(sql, con)) { con.Open(); SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult); if (dr.HasRows) { bool firstRow = true; while (dr.Read()) { int pageId = dr.GetInt32(0); string pageName = dr.GetString(1); string title = dr.GetString(2); string metaDescriptionSynopsis = dr.GetString(3); DateTime InsetDateTime = dr.GetDateTime(4); string author = dr.GetString(5); if (firstRow == true) { buffer.Append("<lastBuildDate>"); buffer.Append(InsetDateTime.ToString("r")); buffer.Append("</lastBuildDate>\r\n"); } buffer.Append("<item>\r\n"); buffer.Append("<title>").Append(title); buffer.Append("</title>\r\n"); buffer.Append("<link><![CDATA["); buffer.Append(String.Format("http://iranganj.ir/" + "post/{0}/{1}", pageId, pageName)); buffer.Append("]]></link>\r\n"); buffer.Append("<description><![CDATA["); buffer.Append(metaDescriptionSynopsis); buffer.Append("]]></description>\r\n"); buffer.Append("<author>").Append(author).Append("</author>\r\n"); buffer.Append("<pubDate>"); buffer.Append(InsetDateTime.ToString("r")); buffer.Append("</pubDate>\r\n"); buffer.Append("</item>\r\n"); firstRow = false; } } } buffer.Append("</channel>\r\n"); buffer.Append("</rss>\r\n"); Cache.Insert("Rss", buffer.ToString(), null, DateTime.Now.AddHours(1), TimeSpan.Zero); } Response.Write(Cache["Rss"].ToString()); } </script>
در که های بالا به جایی iranganj.ir آدرس سایت خود را بنویسید.
ابتدا از دیتابیس 10 مطالب آخر را انتخاب کردیم و سپس لینک مطالب را که در مثال های قبل هم توضیح دادیم در rss قرار داده ایم.
کد زیر را در صفحه ای که می خواهید ار اس اس باشد بین تگ های head قرار دهید.
<link rel="alternate" title="ایران گنج" href="http://iranganj.ir/rss.aspx" type="application/rss+xml" />
دیتابیس برنامه کنار فایل قرار داده شده
در آموزش های بعدی جهت کاملتر کردن این آموزش که نحوه ارتباط rss با feedburner.google.com را توضیح می دهیم که می توانید اخبار سایت را به کاربران خود بدون نیاز به خرید پنل های ارسال ایمیل به صورت رایگان ارسال کنید.
نظر / سوال