Impostazioni di configurazione del provider di stato della sessione di ASP.NET in Cache nel ruolo di Azure

Importante

Microsoft consiglia tutti i nuovi sviluppi che usano Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?

Questo argomento illustra le impostazioni di configurazione per il provider di stato della sessione di Azure per ASP.NET. Queste impostazioni vengono specificate nella sezione provider dell'elemento sessionState nel file web.config.

Impostazioni di configurazione relative allo stato della sessione

Attributo Descrizione

nome (obbligatorio)

Nome "descrittivo" del provider usato dall'elemento sessionState per fare riferimento al provider.

tipo (obbligatorio)

Stringa type di .NET Framework per il provider. Vedere la seguente nota sul valore obbligatorio.

cacheName (obbligatorio)

Nome della cache di Azure. L'impostazione deve essere “default”.

dataCacheClientName (facoltativo)

Nome della sezione dataCacheClient da usare dalla sezione di configurazione di dataCacheClients . Questo attributo è obbligatorio solo se nel file di web.config vengono specificate più sezioni dataCacheClient . Per impostazione predefinita, il provider userà la sezione dataCacheClient denominata “default”.

applicationName (facoltativo)

Valore stringa usato dal provider durante la creazione delle chiavi della cache per la memorizzazione dei dati della cache di output. Il valore predefinito è una stringa vuota. Quando questo attributo non è impostato, il provider usa il valore di HttpRuntime.AppDomainAppId come parte delle chiavi della cache che usa internamente. Diversamente da quanto avviene per la funzionalità relativa allo stato della sessione, è opportuno che i dati della cache di output non siano condivisi tra diverse applicazioni ASP.NET (ad esempio /contoso e /AdventureWorks non possono condividere i dati della cache di output). È invece necessario assicurare che diverse istanze fisiche della stessa applicazione possano accedere agli stessi dati della cache di output. A questo scopo, è possibile procedere in due diversi modi:

  • Se l'attributo del provider applicationName non è impostato in modo esplicito, HttpRuntime.AppDomainAppId viene usato internamente dal provider durante la creazione di chiavi della cache. Questo significa che ciascuna istanza fisica della stessa applicazione (ad esempio ciascun server Web che ospita l'applicazione /contoso) deve essere installata in IIS usando lo stesso percorso di metabase. Per https://support.microsoft.com/kb/325056una spiegazione del modo in cui vengono usati i percorsi della metabase con i provider di stato di sessione SQL Server e out-of-process. Anche se lo stato della sessione è una funzionalità diversa, lo stesso problema esiste con mantenere sincronizzati i percorsi metabase. Ciò si applica alla memorizzazione nella cache dell'output quando l'attributo applicationName non è stato impostato nel file di web.config.

  • Un approccio più semplice è per ogni istanza della stessa applicazione ASP.NET ,ad esempio in ogni server Web che ospita l'applicazione /contoso, per usare lo stesso attributo applicationName nel file web.config. In questo modo, le diverse istanze fisiche della stessa applicazione possono leggere e scrivere gli stessi dati nella cache di output. In questo caso il provider non usa AppDomainAppId durante la costruzione di chiavi della cache e quindi non esiste alcun rischio di percorsi metabase non corrispondenti.

useBlobMode (facoltativo )

Valore booleano che specifica se i dati di stato della sessione devono essere caricati e memorizzati come un unico BLOB serializzato. In questa versione questo attributo deve essere impostato su true, che corrisponde al valore predefinito. L'uso di false non è supportato.

nonInlinedAdditionalLifetime (non supportato)

Attributo non supportato in questa versione.

riprovareInterval (facoltativo)

Intervallo di tempo di attesa tra i tentativi di ripetizione di un'operazione in caso di errore di comunicazione con la cache. Il formato della stringa da usare per questo valore è "HH:MM:SS". Per impostazione predefinita, viene attivata la modalità di sospensione del provider per un secondo.

retryCount (facoltativo)

Valore intero che indica al provider il numero di tentativi di ripetizione di un'operazione in caso di errore di comunicazione con la cache. I tentativi di ripetizione possono essere effettuati solo per alcune operazioni. Il valore predefinito è tre. Il provider dorme per il tempo di ripetizione del tentativo configuratoInterval tra ogni tentativo di ripetizione.

inlinedKeys (non supportato)

Attributo non supportato in questa versione.

maxInlinedStringLength (non supportato)

Attributo non supportato in questa versione.

Nota

L'attributo type deve essere impostato su “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”.

Esempio

<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>

Vedere anche

Concetti

Provider di stato della sessione per Cache nel ruolo di Azure