Stato della sessione con Cache Redis di Azure in Servizio app di Azure

questo argomento illustra come usare il servizio Cache Redis di Azure per lo stato sessione.

Se l'app Web ASP.NET usa lo stato della sessione, sarà necessario usare un provider di stato della sessione esterno (il provider del servizio Cache Redis o un provider di stato della sessione SQL Server). Se si usa lo stato della sessione, e non un provider esterno, verrà applicato il limite di una sola istanza dell'app Web. Il servizio Cache Redis può essere abilitato con la massima rapidità e semplicità.

Nota

Sebbene in questo articolo si faccia riferimento alle app Web, è applicabile anche ad app per le API e app per dispositivi mobili.

Creare la Cache

Per creare la cache, attenersi a queste istruzioni.

Aggiungere il pacchetto NuGet RedisSessionStateProvider all'app Web

Installare il pacchetto NuGet RedisSessionStateProvider . Usare il comando seguente per effettuare l'installazione dalla Console di Gestione pacchetti (Strumenti > Gestione pacchetti NuGet > Console di Gestione pacchetti):

PM> Install-Package Microsoft.Web.RedisSessionStateProvider

Per effettuare l'installazione da Strumenti > Gestione pacchetti NuGet > Manage NugGet Packages for Solution (Gestisci pacchetti NuGet per la soluzione), cercare RedisSessionStateProvider.

Per altre informazioni, vedere la pagina relativa a RedisSessionStateProvider di NuGet e la pagina Configurare i client della cache.

Modificare il file Web.Config

Oltre a creare riferimenti ad assembly per la cache, il pacchetto NuGet aggiunge voci stub nel file web.config .

  1. Aprire web.config e trovare l'elemento sessionState .
  2. Immettere i valori relativi a host, accessKey, port (la porta SSL deve essere 6380) e impostare SSL su true Questi valori possono essere ottenuti dal pannello del portale di Azure per l'istanza della cache. Per altre informazioni, vedere Connettersi alla cache. Si tenga presente che per le nuove cache la porta senza SSL è disabilitata per impostazione predefinita. Per altre informazioni sull'abilitazione della porta senza SSL, vedere la sezione relativa alle porte di accesso nell'argomento Configurare una cache in Cache Redis di Azure. Il markup seguente mostra le modifiche al file web.config, in particolare le modifiche apportate a porta, host, accessKey* e ssl.

       <system.web>;
         <customErrors mode="Off" />;
         <authentication mode="None" />;
         <compilation debug="true" targetFramework="4.5" />;
         <httpRuntime targetFramework="4.5" />;
         <sessionState mode="Custom" customProvider="RedisSessionProvider">;
           <providers>;  
               <!--<add name="RedisSessionProvider" 
                 host = "127.0.0.1" [String]
                 port = "" [number]
                 accessKey = "" [String]
                 ssl = "false" [true|false]
                 throwOnError = "true" [true|false]
                 retryTimeoutInMilliseconds = "0" [number]
                 databaseId = "0" [number]
                 applicationName = "" [String]
               />;-->;
              <add name="RedisSessionProvider" 
                   type="Microsoft.Web.Redis.RedisSessionStateProvider" 
                   port="6380"
                   host="movie2.redis.cache.windows.net" 
                   accessKey="m7PNV60CrvKpLqMUxosC3dSe6kx9nQ6jP5del8TmADk=" 
                   ssl="true" />;
           <!--<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" accessKey="" ssl="false" />;-->;
           </providers>;
         </sessionState>;
       </system.web>;
    

Utilizzo dell'oggetto Session nel codice

Il passaggio finale consiste nell'iniziare a utilizzare l'oggetto Session nel proprio codice ASP.NET. Aggiungere oggetti allo stato sessione usando il metodo Session.Add. che utilizza coppie chiave-valore per memorizzare elementi nella cache di stato sessione.

string strValue = "yourvalue";
Session.Add("yourkey", strValue);

Il codice seguente recupera questo valore dallo stato sessione.

object objValue = Session["yourkey"];
if (objValue != null)
   strValue = (string)objValue;    

È inoltre possibile usare Cache Redis per nascondere gli oggetti nell'app Web. Per altre informazioni, vedere il blog relativo all' applicazione per filmati MVC con Cache Redis di Azure in 15 minuti. Per altre informazioni su come usare lo stato sessione ASP.NET, vedere Cenni preliminari sullo stato della sessione ASP.NET.

Nota

Per iniziare a usare il servizio app di Azure prima di registrarsi per ottenere un account Azure, andare a Prova il servizio app, dove è possibile creare un'app Web iniziale temporanea nel servizio app. Non è necessario fornire una carta di credito né impegnarsi in alcun modo.

Modifiche apportate