Compartir vía


Configuración de proveedores de estado de sesión ASP.NET (Almacenamiento en caché de Windows Server AppFabric)

Windows Server AppFabric ofrece un proveedor de estado de sesión personalizado para las aplicaciones web ASP.NET. Esto permite a las aplicaciones web diseminar objetos de sesión por el clúster de caché, lo que proporciona escalabilidad. Debido a la naturaleza de las características de almacenamiento en caché de AppFabric, los objetos que coloque en el elemento Session deben ser serializables.

Los procedimientos de este tema suponen que ya ha preparado el entorno de desarrollo de la aplicación web y establecido las referencias a los ensamblados de almacenamiento en caché de AppFabric, etcétera. Para obtener más información, vea Preparación del entorno de desarrollo de clientes de caché (Almacenamiento en caché de Windows Server AppFabric).

Para que la aplicación web ASP.NET use el proveedor de estado de sesión de AppFabric, debe agregar los elementos siguientes al archivo web.config de la aplicación:

  • configSections: este debe ser el primer elemento del archivo de configuración, debajo de la etiqueta de apertura configuration. Es necesario para que los ensamblados de almacenamiento en caché de AppFabric funcionen.

  • dataCacheClient: este es un elemento secundario del elemento de configuración. Se usa para configurar el cliente de caché y especificar los hosts de caché. Para obtener más información sobre el cliente de caché, vea Desarrollo de un cliente de caché (Almacenamiento en caché de Windows Server AppFabric).

  • sessionState: este es un elemento secundario del elemento system.web. Especifica a la aplicación web que debe usar AppFabric para administrar los estados de sesión. El atributo cacheName especifica la memoria caché con nombre que se usará. Si almacena datos de sesión en una región de caché, use el atributo regionName para especificar la región.

Nota

A los objetos almacenados en una región no se les aplicará el equilibrio de carga entre los hosts de caché. En cambio, dichos objetos se ubicarán en el host de caché en el que se creó la región. Por esta razón, no es una configuración recomendada generalmente. Las regiones sólo se deben usar cuando hay una necesidad especial de ubicar todos los objetos de sesión en un único host.

WarningAdvertencia
Se recomienda proteger al archivo web.config que se usa para especificar los nombres de los hosts de caché.

Procedimiento para configurar un proveedor de estado de sesión de AppFabric para la aplicación web

  1. Copie en el archivo web.config el elemento configSections del ejemplo que encontrará después de estos pasos. Asegúrese de que este elemento es el primero dentro de las etiquetas configuration.

  2. Copie en el archivo web.config el elemento dataCacheClient del ejemplo que encontrará después de estos pasos. Se debe agregar después del elemento configSections, dentro del elemento configuration.

    1. Configure los atributos name y cachePort de los elementos de host para que coincidan con los servidores de caché del entorno. Agregue o quite elementos de host según sea apropiado.
  3. Copie en el archivo web.config el elemento sessionState del ejemplo que encontrará después de estos pasos. Debe estar situado dentro del elemento system.web.

  4. Determine la identidad de la aplicación web. Esto se puede realizar en el Administrador de IIS en los servidores web. Consulte la identidad del grupo de aplicaciones asociado a la aplicación web. Conceda a este usuario el acceso al clúster de caché mediante el comando Grant-CacheAllowedClientAccount de Windows Powershell.

    TipSugerencia
    Si el grupo de aplicaciones se ejecuta como una cuenta integrada del equipo, por ejemplo "NT Authority\Servicio de red", debe conceder acceso al clúster de caché para ese equipo. Para ello, puede especificar DOMAINNAME\MACHINENAME$ como la cuenta. Tenga en cuenta que el signo "$" se agrega al nombre del equipo para indicar que es la cuenta del equipo.

Ejemplo

En este ejemplo se muestra cómo configurar una aplicación web ASP.NET de modo que use un cliente de caché para almacenar datos de sesión en una memoria caché distribuida denominada NamedCache1. El cliente de caché de este ejemplo únicamente está configurado para comunicarse con un host de caché que se denomina CacheServer1.

En primer lugar, agregue el elemento configSections al archivo web.config como primer elemento del elemento configuration:

<!--configSections must be the FIRST element -->
<configSections>
   <!-- required to read the <dataCacheClient> element -->
   <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
</configSections>

A continuación, agregue el elemento dataCacheClient al archivo web.config, después del elemento configSections. Ahora es cuando se configura el cliente de caché para que satisfaga las necesidades de la aplicación. Para obtener más información, vea Valores de configuración de la aplicación (Almacenamiento en caché de Windows Server AppFabric).

<!-- cache client -->
<dataCacheClient> 
  <!-- cache host(s) -->
  <hosts>
    <host
       name="CacheServer1"
       cachePort="22233"/>
  </hosts>
</dataCacheClient>

Después de agregar los elementos configSections y dataCacheClient, agregue el elemento sessionState al archivo web.config, dentro del elemento system.web. Ahora es cuando se especifica qué memoria caché usará la aplicación web para almacenar los datos de estado de sesión.

Tenga en cuenta que si varias aplicaciones web necesitan compartir el mismo estado de sesión, deben usar el mismo valor de atributo sharedId. De lo contrario, no es necesario especificar el atributo sharedId.

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <!-- specify the named cache for session data -->
    <add 
      name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
      cacheName="NamedCache1"
      sharedId="SharedApp"/>
  </providers>
</sessionState>

Cuando finalice, el archivo web.config final de la aplicación web se parecerá al ejemplo siguiente.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <!--configSections must be the FIRST element -->
  <configSections>
     <!-- required to read the <dataCacheClient> element -->
     <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
  </configSections>
  
  <!-- cache client -->
  <dataCacheClient>    
    <!-- cache host(s) -->
    <hosts>
      <host
         name="CacheServer1"
         cachePort="22233"/>
    </hosts>
  </dataCacheClient>

  <system.web>
    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
      <providers>
        <!-- specify the named cache for session data -->
        <add 
          name="AppFabricCacheSessionStoreProvider" 
          type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
          cacheName="NamedCache1"
          sharedId="SharedApp"/>
      </providers>
    </sessionState>
  </system.web>
</configuration>

Vea también

Conceptos

Introducción al cliente de caché de Windows Server AppFabric (XML)
Uso de métodos de configuración (almacenamiento en caché de Windows Server AppFabric)
Conceptos de almacenamiento en caché de Windows Server AppFabric
Desarrollo de un cliente de caché (Almacenamiento en caché de Windows Server AppFabric)

  2011-12-05