Advertisement
  1. Code
  2. ASP.NET

Cómo construir una fuente RSS con ASP.NET

Scroll to top
Read Time: 14 min

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

En el transcurso de este tutorial, repasaremos cómo crear una fuente RSS con el framework ASP.NET. Tener una fuente RSS para tu sitio se ha convertido en una necesidad en los últimos años. Con blogs o sitios de noticias que se actualizan frecuentemente, y con la gran cantidad de blogs y sitios web de noticias existentes, RSS ha permitido a los lectores mantenerse al día con respecto al nuevo contenido sin ser obligados a visitarlo. Una vez que hayas terminado este tutorial, sabrás cómo crear una fuente RSS con ASP.NET y cómo presentar documentos XML en páginas web ASP.NET.


Paso 0: Introducción a RSS 2.0

RSS es un formato de sindicación de contenido web. Significa "Really Simple Syndication", o "Sindicación Realmente Simple", y está escrito en XML. Todos los archivos RSS deben cumplir con la especificación XML 1.0, según lo publicado por el World Wide Web Consortium (W3C). Con RSS es posible distribuir contenido web actualizado desde un sitio web a miles de otros sitios en todo el mundo. Para simplificar el término, RSS permite una búsqueda rápida de noticias y actualizaciones.

Las reglas de sintaxis de RSS 2.0 son bastante simples, aunque estrictas. Este es un documento RSS sencillo:

1
2
<?xml version="1.0" encoding="utf-8" ?>
3
<rss version="2.0">
4
  <channel>
5
    <title>Your Website Name</title>
6
    <link>http://www.yourdomain.com</link>
7
    <description>Free RSS Tutorial</description>
8
    <item>
9
      <title>First Article</title>
10
      <link>http://www.yourdomain.com/article.aspx?ID=1</link>
11
      <description>The description of the first article.</description>
12
    </item>
13
    <item>
14
      <title>Second Article</title>
15
      <link>http://www.yourdomain.com/article.aspx?ID=2</link>
16
      <description>The description of the second article.</description>
17
    </item>
18
  </channel>
19
</rss>

La primera línea del documento (la declaración XML) define la versión XML y la codificación de caracteres usada en el documento. En este caso, el documento cumple con la especificación 1.0 de XML y usa el conjunto de caracteres utf-8. La siguiente línea es la declaración RSS, que identifica que este es, de hecho, un documento RSS (más específicamente, RSS versión 2.0).

La siguiente línea contiene el elemento <channel>. Este elemento se usa para describir la fuente RSS. El elemento <channel> tiene tres elementos hijos obligatorios:

  • <title> - Define el título del canal (por ejemplo, el nombre de tu sitio web)
  • <link> - Define el hipervínculo al canal (por ejemplo, http://www.tudominio.com)
  • <description> - Describe al canal (por ejemplo, Tutorial de RSS Gratuito)

Cada elemento <channel> puede tener uno o más elementos <item>. Cada elemento <item> define un artículo o "historia" dentro de la fuente RSS.

El elemento <item> requiere tres elementos hijos:

  • <title> - Define el título del item (por ejemplo Primer Artículo)
  • <link> - Define el hipervínculo al item (por ejemplo, http://www.tudominio.com/articulo.aspx?ID=1)
  • <description> - Describe al item (por ejemplo, La descripción del primer artículo)

Al desplegarse en Firefox, el documento RSS anterior debería verse similar a:

RSS document

Paso 1: Comenzando

Para seguir este tutorial, imagina que trabajas como desarrollador web y que estás construyendo un sitio web de noticias en el que todas las historias se almacenan en una base de datos SQL Server de Microsoft. Específicamente, los artículos son almacenados en una tabla llamada News, que contiene los siguientes campos:

  • ArticleID - un campo entero de clave primaria autoincremental que identifica a cada artículo de forma única
  • Title - un nvarchar(256), que especifica el título del artículo
  • Author - un nvarchar(50) que especifica al autor del artículo
  • Description - un nvarchar(500) que proporciona una descripción más profunda del artículo
  • DatePublished - un datetime que indica la fecha en la que el artículo fue publicado

Toma en cuenta que pueden haber otros campos en la tabla News, pero aquellos listados anteriormente son los únicos que estamos interesados en usar, al menos para los fines de una fuente RSS.

Usaremos Visual Studio para terminar el ejemplo. Si no tienes la versión completa de VS, puedes conseguir la Edición Express gratuita.


Paso 2: Creando una página rss.aspx

Nuestro siguiente paso es crear una página web ASP.NET (rss.aspx) que mostrará una lista de las noticias más recientes como un documento RSS 2.0 con el formato apropiado. En el Solution Explorer (Explorador de Soluciones), haz clic con el botón derecho en el nombre del proyecto y luego haz clic en Add New Item (Añadir Nuevo Elemento). En este cuadro de diálogo, dentro de las plantillas de Visual Studio instaladas, haz clic en Web Form (Formulario Web).

Add New Page

El el cuadro Name (Nombre) escribe un nombre para la nueva página web (rss.aspx), y luego haz clic en Add (Añadir). La nueva página web ASP.NET (rss.aspx) será creada y mostrada en consecuencia.

Ya que queremos que la página rss.aspx genere una salida XML, lo primero que debemos hacer es eliminar todo el marcado HTML o los controles web de la página, y luego asignar el valor "text/xml" a la propiedad ContentType de la directiva @page.

Después de eliminar todo el marcado HTML de la página rss.aspx, agrega un control Repeater a la página. Usaremos el control Repeater para mostrar un documento RSS en la página rss.aspx.

Esta es la vista del código fuente de la página rss.aspx después de haber hecho algunos cambios:

1
2
<%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="NettutsTutorial2.rss" %>
3
4
<asp:Repeater ID="RepeaterRSS" runat="server">
5
</asp:Repeater>

Paso 3: Configurando la cadena de conexión

A continuación queremos configurar la cadena de conexión de la fuente de datos dentro del archivo Web.config. Si guardamos la información de la cadena de conexión podemos evitar codificarla de forma estática en el archivo de código subyacente. Esto simplifica las cosas si la información de la cadena de conexión cambia en el futuro. Colócala en la sección <connectionStrings> dentro de configuration element (elemento de configuración), de esta forma:

1
2
<connectionStrings>
3
  <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Nettuts.mdf;Integrated Security=True;User Instance=True"
4
   providerName="System.Data.SqlClient" />
5
 </connectionStrings>

Vamos a acceder a esta información desde el archivo de código subyacente más adelante, cuando queramos obtener información de la base de datos.


Paso 4: Eliminando caracteres no permitidos del documento XML

Algunos caracteres tienen un significado especial en XML. Si colocas un carácter como "<" dentro de un elemento XML, éste generará un error, ya que el analizador lo interpreta como el inicio de un nuevo elemento. Para evitar este error reemplaza el carácter "<" con su referencia de entidad (&lt;).

Existen cinco referencias de entidades predefinidas en XML:

&lt; < menor que
&gt; > mayor que
&amp; & ampersand
&apos; ' apóstrofe
&quot; " comillas

Para evitar que nuestra fuente RSS genere un error, tenemos que reemplazar todos los caracteres ilegales de un documento RSS por sus referencias de entidades. Agrega el siguiente código al archivo de código subyacente de la página rss.aspx (rss.aspx.cs):

1
2
protected string RemoveIllegalCharacters(object input)
3
{
4
    // cast the input to a string
5
    string data = input.ToString();      
6
7
    // replace illegal characters in XML documents with their entity references
8
    data = data.Replace("&", "&amp;");
9
    data = data.Replace("\"", "&quot;");
10
    data = data.Replace("'", "&apos;");
11
    data = data.Replace("<", "&lt;");
12
    data = data.Replace(">", "&gt;");
13
14
    return data;
15
}

La función RemoveIllegalCharacters() ejecuta algunos reemplazos de cadena simples, si es necesario. Invocaremos a esta función desde la página rss.aspx muy pronto.


Paso 5: Obteniendo información de la base de datos

Agrega el siguiente código al manejador de eventos Page_Load:

1
2
protected void Page_Load(object sender, EventArgs e)
3
{
4
    // Get connection string from the web.config file
5
    string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
6
7
    // Create SqlConnection object
8
    SqlConnection sqlConn = new SqlConnection();
9
    sqlConn.ConnectionString = connString;
10
11
    // SQL query to retrieve data from database
12
    string sqlQuery = "SELECT TOP 10 ArticleID, Title, Author, Description, DatePublished FROM News ORDER BY DatePublished DESC";
13
14
    // Create SqlCommand object
15
    SqlCommand cmd = new SqlCommand();
16
    cmd.Connection = sqlConn;
17
    cmd.CommandType = CommandType.Text;
18
    cmd.CommandText = sqlQuery;
19
20
    // open connection and then binding data into RepeaterRSS control
21
    sqlConn.Open();
22
    RepeaterRSS.DataSource = cmd.ExecuteReader();
23
    RepeaterRSS.DataBind();
24
    sqlConn.Close();
25
}

El código anterior intentará obtener los diez elementos de noticias más recientes de tu base de datos. A continuación los vinculará a un control Repeater (RepeaterRSS) cuando la página sea cargada.


Paso 6: Mostrando la información

Este es nuestro último paso. Es hora de mostrar los elementos de la tabla News en un archivo de sindicación RSS 2.0 apropiado. La manera más simple y rápida de mostrar la información de la base de datos como XML es usando un control Repeater (RepeaterRSS). Específicamente, el Repeater mostrará las etiquetas <rss>, <channel> y los elementos relacionados con el sitio web en sus plantillas HeaderTemplate y FooterTemplate, y los elementos <item> en la plantilla ItemTemplate. No olvides invocar a la función de ayuda RemoveIllegalCharacters() para reemplazar caracteres no deseados de la cadena de salida.

Lo siguiente es la porción HTML de nuestra página web ASP.NET (rss.aspx):

1
2
<%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="NettutsTutorial2.rss" %>
3
4
<asp:Repeater ID="RepeaterRSS" runat="server">
5
        <HeaderTemplate>
6
           <rss version="2.0">
7
                <channel>
8
                    <title>Name of the Website</title>
9
                    <link>http://www.yourdomain.com</link>
10
                    <description>
11
                    Short description of the website.
12
                    </description>
13
        </HeaderTemplate>
14
        <ItemTemplate>
15
            <item>
16
                <title><%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %></title>
17
                <link>http://www.yourdomain.com/news.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ArticleID") %></link>
18
                <author><%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Author"))%></author>
19
                <pubDate><%# String.Format("{0:R}", DataBinder.Eval(Container.DataItem, "DatePublished"))%></pubDate>
20
                <description><%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Description"))%></description>
21
        </item>
22
        </ItemTemplate>
23
        <FooterTemplate>
24
                </channel>
25
            </rss>  
26
        </FooterTemplate>
27
</asp:Repeater>

Lo primero que vale la pena observar aquí es que el archivo rss.aspx anterior contiene solamente el control Repeater (RepeaterRSS) y ningún otro marcado HTML ni controles web. Esto se debe a que queremos que la página genere únicamente una salida XML. Configuramos el ContentType de la directiva @Page con el valor "text/xml" para indicar que la salida de la página rss.aspx es un documento XML.

En la plantilla HeaderTemplate del control Repeater colocamos los elementos <rss> y <channel>.

A continuación, en ItemTemplate colocamos los elementos <item>, que contienen a los elementos <title>, <link>, <author>, <pubDate> y <description>, como ubicación para los campos de la base de datos. Invocamos a la función RemoveIllegalCharacters() al añadir los campos Title, Author y Description de la base de datos a la salida XML. Recuerda, esta función simplemente reemplaza cualquier carácter XML no permitido por sus referencias de entidades.

Finalmente, el campo DatePublished de la base de datos, introducido en el elemento <pubDate>, recibe un formato usando el método String.Format. El especificador de formato estándar, R, le da formato al valor DatePublished de forma apropiada de acuerdo a la Especificación de Fecha y Hora, RFC 822. Este formato comienza con una abreviatura para el día opcional de tres letras y una coma, seguida por un día obligatorio, el mes abreviado con tres letras y luego el año, seguido por una hora con el nombre de la zona horaria, por ejemplo Jue, 04 Nov 2010 20:50:26 GMT.


El resultado

¡Y aquí lo tenemos!. Con un esfuerzo mínimo hemos creado una fuente RSS personalizada para una aplicación ASP.NET.

The Resulting Feed

El código completo

El archivo rss.aspx.

1
2
<%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="NettutsTutorial2.rss" %>
3
4
<asp:Repeater ID="RepeaterRSS" runat="server">
5
        <HeaderTemplate>
6
           <rss version="2.0">
7
                <channel>
8
                    <title>Name of the Website</title>
9
                    <link>http://www.yourdomain.com</link>
10
                    <description>
11
                    Short description of the website.
12
                    </description>
13
        </HeaderTemplate>
14
        <ItemTemplate>
15
            <item>
16
                <title><%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %></title>
17
                <link>http://www.yourdomain.com/news.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ArticleID") %></link>
18
                <author><%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Author"))%></author>
19
                <pubDate><%# String.Format("{0:R}", DataBinder.Eval(Container.DataItem, "DatePublished"))%></pubDate>
20
                <description><%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Description"))%></description>
21
        </item>
22
        </ItemTemplate>
23
        <FooterTemplate>
24
                </channel>
25
            </rss>  
26
        </FooterTemplate>
27
</asp:Repeater>

El archivo rss.aspx.cs.

1
2
using System;
3
using System.Collections;
4
using System.Configuration;
5
using System.Data;
6
using System.Linq;
7
using System.Web;
8
using System.Web.Security;
9
using System.Web.UI;
10
using System.Web.UI.HtmlControls;
11
using System.Web.UI.WebControls;
12
using System.Web.UI.WebControls.WebParts;
13
using System.Xml.Linq;
14
using System.Data.SqlClient;
15
16
namespace NettutsTutorial2
17
{
18
    public partial class rss : System.Web.UI.Page
19
    {
20
        protected void Page_Load(object sender, EventArgs e)
21
        {
22
            // Get connection string from web.config file
23
            string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
24
25
            // Create SqlConnection object
26
            SqlConnection sqlConn = new SqlConnection();
27
            sqlConn.ConnectionString = connString;
28
29
            // SQL query to retrieve data from database
30
            string sqlQuery = "SELECT TOP 10 ArticleID, Title, Author, Description, DatePublished FROM News ORDER BY DatePublished DESC";
31
32
            // Create SqlCommand object
33
            SqlCommand cmd = new SqlCommand();
34
            cmd.Connection = sqlConn;
35
            cmd.CommandType = CommandType.Text;
36
            cmd.CommandText = sqlQuery;
37
38
            // open connection and then binding data into RepeaterRSS control
39
            sqlConn.Open();
40
            RepeaterRSS.DataSource = cmd.ExecuteReader();
41
            RepeaterRSS.DataBind();
42
            sqlConn.Close();
43
        }
44
45
        protected string RemoveIllegalCharacters(object input)
46
        {
47
            // cast the input to a string
48
            string data = input.ToString();
49
50
            // replace illegal characters in XML documents with their entity references
51
            data = data.Replace("&", "&amp;");
52
            data = data.Replace("\"", "&quot;");
53
            data = data.Replace("'", "&apos;");
54
            data = data.Replace("<", "&lt;");
55
            data = data.Replace(">", "&gt;");
56
57
            return data;
58
        }
59
    }
60
}

El archivo Web.config.

1
2
<?xml version="1.0"?>
3
<configuration>
4
  <configSections>
5
		<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
6
			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
7
				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
8
				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
9
					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
10
					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
11
					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
12
					<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
13
				</sectionGroup>
14
			</sectionGroup>
15
		</sectionGroup>
16
	</configSections>
17
	<appSettings/>
18
	<connectionStrings>
19
		<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Nettuts.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
20
	</connectionStrings>
21
	<system.web>
22
		<!-- 

23
            Set compilation debug="true" to insert debugging 

24
            symbols into the compiled page. Because this 

25
            affects performance, set this value to true only 

26
            during development.

27
        -->
28
		<compilation debug="true">
29
			<assemblies>
30
				<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
31
				<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
32
				<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
33
				<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
34
			</assemblies>
35
		</compilation>
36
		<!--

37
            The <authentication> section enables configuration 

38
            of the security authentication mode used by 

39
            ASP.NET to identify an incoming user. 

40
        -->
41
		<authentication mode="Windows"/>
42
		<!--

43
            The <customErrors> section enables configuration 

44
            of what to do if/when an unhandled error occurs 

45
            during the execution of a request. Specifically, 

46
            it enables developers to configure html error pages 

47
            to be displayed in place of a error stack trace.

48


49
        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

50
            <error statusCode="403" redirect="NoAccess.htm" />

51
            <error statusCode="404" redirect="FileNotFound.htm" />

52
        </customErrors>

53
        -->
54
		<pages>
55
			<controls>
56
				<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
57
				<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
58
			</controls>
59
		</pages>
60
		<httpHandlers>
61
			<remove verb="*" path="*.asmx"/>
62
			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
63
			<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
64
			<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
65
		</httpHandlers>
66
		<httpModules>
67
			<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
68
		</httpModules>
69
	</system.web>
70
	<system.codedom>
71
		<compilers>
72
			<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
73
				<providerOption name="CompilerVersion" value="v3.5"/>
74
				<providerOption name="WarnAsError" value="false"/>
75
			</compiler>
76
		</compilers>
77
	</system.codedom>
78
	<!-- 

79
        The system.webServer section is required for running ASP.NET AJAX under Internet

80
        Information Services 7.0.  It is not necessary for previous version of IIS.

81
    -->
82
	<system.webServer>
83
		<validation validateIntegratedModeConfiguration="false"/>
84
		<modules>
85
			<remove name="ScriptModule"/>
86
			<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
87
		</modules>
88
		<handlers>
89
			<remove name="WebServiceHandlerFactory-Integrated"/>
90
			<remove name="ScriptHandlerFactory"/>
91
			<remove name="ScriptHandlerFactoryAppServices"/>
92
			<remove name="ScriptResource"/>
93
			<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
94
			<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
95
			<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
96
		</handlers>
97
	</system.webServer>
98
	<runtime>
99
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
100
			<dependentAssembly>
101
				<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
102
				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
103
			</dependentAssembly>
104
			<dependentAssembly>
105
				<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
106
				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
107
			</dependentAssembly>
108
		</assemblyBinding>
109
	</runtime>
110
</configuration>

Conclusión

Crear una fuente RSS con ASP.NET es muy sencillo, ¿no es así?. Solamente necesitamos comprender la especificación RSS 2.0. Más allá de eso, mediante el uso del control Repeater de .NET podemos mostrar elementos a partir de una base de datos en el documento RSS. La mayoría de los sistemas de gestión de contenido tendrán esta capacidad de forma predeterminada. Sin embargo, si eres un desarrollador y estás creando un sitio web ASP.NET desde cero, ahora tienes la habilidad de construir tu propia fuente personalizada.

¡Que disfrutes codificando!.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.