luktom.net
  • blog
  • kontakt
  • english





Jak utworzyć kanał RSS w ASP.NET MVC?

08 sie, 2010
C#
Brak komentarzy
Odsłony : 9943

ASP.NET MVC 2 w standardzie nie posiada niestety żadnego ActionResult, które zwracałoby nam treść w formacie RSS. Nie mniej jednak nic nie stoi na przeszkodzie, aby dopisać klasę dziedziczącą z ActionResult, która będzie generować taki kanał.
W tym wpisie prezentuję jak to zrobić.

Pierwszym krokiem do implementacji kanału RSS jest utworzenie klasy pomocniczej RssResult, która prezentuje się następująco:

using System.Web.Mvc;
using System.ServiceModel.Syndication;
using System.Xml;

namespace luktom.Samples
{
    public class RssResult : ActionResult
    {
        public SyndicationFeed Feed { get; set; }

        public override void ExecuteResult(ControllerContext context)
        {
            context.HttpContext.Response.ContentType = "application/rss+xml";

            Rss20FeedFormatter rss = new Rss20FeedFormatter(Feed);

            using (XmlWriter writer = XmlWriter.Create(context.HttpContext.Response.Output))
            {
                rss.WriteTo(writer);
            }
        }
    }
}

W przypadku, gdy namespace System.ServiceModel.Syndication i należąca do niej klasa Rss20FeedFormatter nie zostaną odnalezione, należy dodać do projektu referencję do System.ServiceModel.Web – w dokumentacji na MSDN jest błąd i przestrzeń Syndication fizycznie mieści się właśnie w System.ServiceModel.Web.dll.

Drugim krokiem jest dodanie odpowiedniego kontrolera i stosownej akcji:

public ActionResult RssFeed()
{
    SyndicationFeed feed = new SyndicationFeed("luktom.net rss",
                                               "Testowy kanał RSS",
                                               new Uri("http://rss.luktom.net/test"));

    List feedItems = new List<SyndicationItem>();

    // tutaj dodajemy elementy do kanału
    feedItems.Add(new SyndicationItem("Element 1",
                                  "Opis elementu 1",
                                  new Uri("http://url.do/elementu1"),
                                  "unikatowy-identyfikator-1",
                                  DateTime.Now)); // data aktualizacji elementu

    feed.Items = feedItems;

    return new RssResult() { Feed = feed };
}

Na zakończenie sugeruję w Global.asax dodać nową trasę (route) do kanału RSS, aby w razie zmiany w kontrolerze nie mieć problemu z koniecznością aktualizacji adresu kanału RSS u klientów.



Tagi :   asp.net mvcmvcrssxml

Powiązane wpisy

  • ASP.NET MVC i subdomeny językowe

  • Jak dodać kanał RSS do fan page na Facebooku?

  • Dodaj komentarz

    Click here to cancel reply

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>





    Łukasz Tomaszkiewicz

    Łukasz Tomaszkiewicz

    Pasjonat chmury, szczególnie AWSa, który nieustannie automatyzuje powtarzające się czynności i optymalizuje procesy, przy okazji wdrażając dobre praktyki dotyczące bezpieczeństwa. Jego szerokie doświadczenie w zakresie tworzenia oprogramowania, projektowania baz danych, a także wirtualizacji serwerów i zarządzania infrastrukturą w chmurze pozwala mu spojrzeć przekrojowo na współczesny stack technologiczny.

    W wolnym czasie fotograf, sporadycznie piszący blogger :) a także regularny prelegent na krakowskich grupach związanych z IT.

    Wyznawca Vim'a :)

    Kategorie

    • Ansible
    • AWS
    • C#
    • Chatboty
    • Cloud
    • Daj się poznać 2017
    • Docker
    • Inne
    • Linux
    • Open source
    • Organizacyjne
    • Prelekcje
    • Sieci komputerowe
    • SQL Server
    • Windows
    • Windows Server
    • Wirtualizacja

    Najczęściej czytane

    • Creating single node VSAN cluster
    • SQL Server – walidacja numerów PESEL i NIP
    • Konfiguracja serwera DHCP na routerach Cisco
    • Aktywacja routingu IP w Windows 7 / Windows Server 2008
    • Konwersja maszyn wirtualnych z ESXi do Hyper-V przy użyciu SCVMM 2012
    • Jak podłączyć program R do SQL Servera?

    Tagi

    .net ai ansible asp.net mvc aws aws cli bot builder bot framework c# centos certyfikaty chatbot chatboty cisco cmd docker dsp2017 esxi hyperv kontenery konteneryzacja linux mvc nlp openvpn plssug pobieranie powershell prelekcje rancher redhat router sieci smogbot sql server ssd ssl vmware vsphere windows windows mobile windows server wirtualizacja wit.ai wrzuta

    Copyright © 2006-2018 by Łukasz Tomaszkiewicz. Wszelkie prawa zastrzeżone