نحوه ساختن 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 مناسب تبدیل می شود.
نتیجه:
- ASP.net MVC
- 2k بازدید
- 12 تشکر