Configuración de proveedor de estado de sesiones ASP.NET en Caché en rol de Azure

Actualizado: agosto de 2015

ImportantImportante
Microsoft recomienda que todos los desarrollos nuevos utilicen Caché en Redis de Azure. Para obtener la documentación y orientación actuales sobre cómo elegir una oferta de Caché de Azure, consulte ¿Qué oferta de Caché de Azure debo utilizar?

En este tema se analizan las opciones de configuración del proveedor de estado de sesión de Azure para ASP.NET. Estas opciones se especifican en la sección providers del elemento sessionState del archivo web.config.

 

Atributo Descripción

name (obligatorio)

Nombre descriptivo del proveedor, que usa el elemento sessionState para hacer referencia al proveedor.

type (obligatorio)

Cadena de tipo .NET Framework para el proveedor. Vea la nota siguiente sobre el valor requerido.

cacheName (obligatorio)

Nombre de la caché de Azure. Se debe establecer en “default”.

dataCacheClientName (opcional)

Nombre de la sección dataCacheClient que se usará de la sección de configuración dataCacheClients. Este atributo solo es obligatorio si se especifican varias secciones dataCacheClient en el archivo web.config. De forma predeterminada, el proveedor usará la sección dataCacheClient llamada “default”.

applicationName (opcional)

Valor de cadena que usa el proveedor al crear claves de caché para almacenar los datos de la caché de resultados. El valor predeterminado es una cadena vacía. Cuando no se establece este atributo, el proveedor usa el valor de HttpRuntime.AppDomainAppId como parte de las claves de caché que usa internamente. A diferencia de la característica de estado de sesión, no querrá compartir los datos de la caché de resultados entre las distintas aplicaciones ASP.NET (por ejemplo, /contoso y /adventureworks no pueden compartir los datos de la caché de resultados). En su lugar, asegúrese de que las instancias físicas diferentes de la misma aplicación tengan acceso todas a los mismos datos de la caché de resultados. Hay dos formas diferentes de lograrlo:

  • Si el atributo de proveedor applicationName no se establece expresamente, el proveedor usa HttpRuntime.AppDomainAppId internamente al crear las claves de caché. Esto hará que cada instancia física de la misma aplicación (es decir, cada servidor web que hospede la aplicación /contoso) deba instalarse en IIS exactamente con la misma ruta de metabase. Vea http://support.microsoft.com/kb/325056para obtener una explicación de cómo se usan las rutas de metabase con SQL Server y los proveedores de estado de sesión fuera de proceso. Si bien el estado de sesión es una característica diferente, se genera el mismo problema cuando se quieren mantener sincronizadas las rutas de metabase. Esto sucede con el almacenamiento en la caché de resultados cuando no se ha establecido el atributo applicationName en el archivo web.config.

  • Un enfoque más sencillo es que cada instancia de la misma aplicación ASP.NET (por ejemplo, en cada servidor web que hospeda la aplicación /contoso) use el mismo atributo applicationName en el archivo web.config. Esto permite que distintas instancias físicas de la misma aplicación lean y escriban los mismos datos de la caché de resultados. En este caso, el proveedor no usa AppDomainAppId al generar las claves de caché y, por lo tanto, no existe el riesgo de una falta de coincidencia en las rutas de metabase.

useBlobMode (opcional)

Valor booleano que especifica si cargar o almacenar los datos de estado de sesión como un blob serializado único. Este atributo debe establecerse en true en esta versión, que es el valor predeterminado. No se admite usar un valor de false.

nonInlinedAdditionalLifetime (no admitido)

No se admite este atributo en esta versión.

retryInterval (opcional)

Intervalo de tiempo durante el cual se debe esperar entre reintentos si se produce un error al comunicarse con la caché. El formato de cadena que se usa con este valor es "HH:MM:SS". De forma predeterminada, el proveedor se suspenderá durante un segundo.

retryCount (opcional)

Valor entero que le indica al proveedor el número de reintentos en caso de error en la comunicación con la caché. Tenga en cuenta que no es posible recuperar todas las operaciones. El valor predeterminado son tres reintentos. El proveedor se suspende durante el tiempo retryInterval configurado entre cada reintento.

inlinedKeys (no admitido)

No se admite este atributo en esta versión.

maxInlinedStringLength (no admitido)

No se admite este atributo en esta versión.

noteNota
El atributo type debe establecerse en “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”.

<configuration>
  <configSections>
    <section name="dataCacheClients" 
          type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
          allowLocation="true" allowDefinition="Everywhere" />
    <section name="cacheDiagnostics"
          type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon"
          allowLocation="true" allowDefinition="Everywhere" />
  </configSections>
  <system.web>
    <!-- Azure Caching session state provider -->
    <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
      <providers>
        <add name="AFCacheSessionStateProvider" 
          type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
          cacheName="default" 
          dataCacheClientName="default" 
          applicationName="AFCacheSessionState"/>
      </providers>
    </sessionState>
  </system.web>
  <dataCacheClients>
    <dataCacheClient name="default">
      <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    </dataCacheClient>
  </dataCacheClients>
  <cacheDiagnostics>
    <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
  </cacheDiagnostics>
</configuration>

Vea también

Mostrar: