Configurazione di un provider di stato della sessione ASP.NET (Memorizzazione nella cache di Windows Server AppFabric)

Windows Server AppFabric offre un provider di stato della sessione personalizzato per le applicazioni Web ASP.NET. Questo consente alle applicazioni Web di distribuire gli oggetti di sessione all'interno del cluster di cache, assicurando così la scalabilità. A causa della natura delle funzionalità di memorizzazione nella cache di AppFabric, gli oggetti che si inseriscono in Session devono essere serializzabili.

Ai fini delle procedure descritte in questo argomento, si presuppone che l'ambiente di sviluppo delle applicazioni Web sia già stato preparato, che siano stati definiti riferimenti agli assembly di memorizzazione nella cache di AppFabric e così via. Per ulteriori informazioni, vedere Preparazione dell'ambiente di sviluppo del client cache (Memorizzazione nella cache di Windows Server AppFabric).

Per consentire alle applicazioni Web ASP.NET di utilizzare il provider di stato della sessione di AppFabric, è necessario aggiungere gli elementi seguenti al file web.config dell'applicazione:

  • configSections: questo elemento deve essere il primo elemento del file di configurazione, sotto il tag di apertura configuration. È infatti necessario al funzionamento degli assembly di memorizzazione nella cache di AppFabric.

  • dataCacheClient: elemento figlio dell'elemento di configurazione. Viene utilizzato per configurare il client della cache e specificare gli host della cache. Per ulteriori informazioni sul client della cache, vedere Sviluppo di un client cache (Memorizzazione nella cache di Windows Server AppFabric).

  • sessionState: elemento figlio dell'elemento system.web. Indica all'applicazione Web di utilizzare AppFabric per gestire gli stati della sessione. L'attributo cacheName specifica quale cache denominata utilizzare. Se si archiviano dati di sessione in un'area della cache, specificarla utilizzando l'attributo regionName.

noteNota
Per gli oggetti archiviati in un'area non viene eseguito il bilanciamento del carico tra gli host della cache, ma vengono posizionati nell'host della cache in cui l'area è stata creata. Per questo motivo, si tratta di una configurazione generalmente sconsigliata. Le aree devono essere utilizzate solo quando esiste una particolare esigenza di posizionare tutti gli oggetti di sessione su un unico host.

WarningAvviso
È consigliabile proteggere il file web.config utilizzato per specificare i nomi degli host della cache.

Per configurare un provider di stato della sessione di AppFabric per un'applicazione Web

  1. Copiare l'elemento configSections dell'esempio dopo questi passaggi nel file web.config. Verificare che questo sia il primo elemento all'interno dei tag configuration.

  2. Copiare l'elemento dataCacheClient dell'esempio dopo questi passaggi nel file web.config. Deve essere aggiunto dopo l'elemento configSections, all'interno dell'elemento configuration.

    1. Configurare gli attributi name e cachePort degli elementi dell'host in modo che corrispondano ai server della cache presenti nell'ambiente in uso. Aggiungere o rimuovere gli elementi appropriati dell'host.

  3. Copiare l'elemento sessionState dell'esempio dopo questi passaggi nel file web.config. Questo deve essere posizionato all'interno dell'elemento system.web.

  4. Determinare l'identità dell'applicazione Web. A tale scopo, utilizzare Gestione IIS nei server Web. Controllare l'identità del pool di applicazioni associato all'applicazione Web. Concedere a tale utente l'accesso al cluster della cache utilizzando il comando Grant-CacheAllowedClientAccount di Windows PowerShell.

    TipSuggerimento
    Se il pool di applicazioni viene eseguito con un account computer predefinito, ad esempio "NT Authority/Servizio di rete", è necessario concedere l'accesso al cluster della cache per tale computer. È possibile effettuare questa operazione specificando NOMEDOMINIO\NOMECOMPUTER$ come account. Si noti che "$" viene accodato al nome del computer per indicare che si tratta dell'account del computer.

Esempio

In questo esempio viene illustrato come configurare un'applicazione Web ASP.NET in modo che utilizzi un client della cache per archiviare i dati di sessione in una cache distribuita chiamata NamedCache1. Il client della cache di questo esempio è configurato per comunicare solo con un host della cache denominato CacheServer1.

Innanzitutto, aggiungere l'elemento configSections al file web.config come primo elemento dell'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>

Quindi, aggiungere l'elemento dataCacheClient al file web.config dopo l'elemento configSections. Questo consente di configurare il client della cache in modo da soddisfare le esigenze dell'applicazione. Per ulteriori informazioni, vedere Impostazioni di configurazione dell'applicazione (Memorizzazione nella cache di Windows Server AppFabric).

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

Dopo aver aggiunto gli elementi configSections e dataCacheClient, aggiungere l'elemento sessionState al file web.config all'interno dell'elemento system.web. Questo consente di specificare quale cache verrà utilizzata dall'applicazione Web per archiviare i dati di stato della sessione.

Si noti che se più applicazioni Web devono condividere lo stesso stato di sessione e devono utilizzare lo stesso valore dell'attributo sharedId. In caso contrario, non è necessario specificare l'attributo 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>

Una volta completato, il file web.config finale dell'applicazione Web è simile all'esempio seguente.

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

Vedere anche

  2011-12-05
Mostra: