نحوه ساختن RSS Feeds با ASP.NET MVC

چهارشنبه 22 مرداد 1393

این مقاله در مورد چگونه ایجاد و یا منتشر کردن feed خودمان می باشد.علاوه بر سن استاندارد Feed و اهانت زیادی که از فیسبوک ، توییتر ، گوگل در RSS/Atom شده، به نظر من استفاده کردن Api به صورت کاملا دستی راحته.

*کدهای زیرساختی ASP.NET MVC  برای RSS*
به رفرنس System.ServiceModel نیاز داریم

   1: public class RssResult : FileResult

   2: {

   3:     private readonly SyndicationFeed _feed;

   4:  

   5:     /// <summary>

   6:     /// Creates a new instance of RssResult

   7:     /// based on this sample 

   8:     /// http://www.developerzen.com/2009/01/11/aspnet-mvc-rss-feed-action-result/

   9:     /// </summary>

  10:     /// <param name="feed">The feed to return the user.</param>

  11:     public RssResult(SyndicationFeed feed)

  12:         : base("application/rss+xml")

  13:     {

  14:         _feed = feed;

  15:     }

  16:  

  17:     /// <summary>

  18:     /// Creates a new instance of RssResult

  19:     /// </summary>

  20:     /// <param name="title">The title for the feed.</param>

  21:     /// <param name="feedItems">The items of the feed.</param>

  22:     public RssResult(string title, List<SyndicationItem> feedItems)

  23:         : base("application/rss+xml")

  24:     {

  25:         _feed = new SyndicationFeed(title, title, HttpContext.Current.Request.Url) { Items = feedItems };

  26:     }

  27:  

  28:     protected override void WriteFile(HttpResponseBase response)

  29:     {

  30:         using (XmlWriter writer = XmlWriter.Create(response.OutputStream))

  31:         {

  32:             _feed.GetRss20Formatter().WriteTo(writer);

  33:         }

  34:     }

  35: } 

با ActionResult  ما قادر خواهیم بود یک feed کنترلر برگردانیم.

   1: public virtual ActionResult Feed(string id)

   2:     {

   3:         var items = new List<SyndicationItem>();

   4:  

   5:         for (int i = 0; i < 10; i++)

   6:         {

   7:             string feedTitle = "Test Title " + i;

   8:  

   9:             var helper = new UrlHelper(this.Request.RequestContext);

  10:             var url = helper.Action("Index", "Home", new { }, Request.IsSecureConnection ? "https" : "http");

  11:  

  12:             var feedPackageItem = new SyndicationItem(feedTitle, "Test Description " + i, new Uri(url));

  13:             feedPackageItem.PublishDate = DateTime.Now;

  14:             items.Add(feedPackageItem);

  15:         }

  16:  

  17:         return new RssResult("Demo Feed", items);

  18:     }   
 
 
 
 
 
 
 

تنها راه حل URL است. معمولا UrlHelper فقط Relative link می سازد.. اما با اعلام تمام پارامترهای آن ، به یک URL مناسب تبدیل می شود.

نتیجه:

فایل های ضمیمه

azadeh

نویسنده 1 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید