نحوه ساختن 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
- 3k بازدید
- 12 تشکر