Provider av ASP.NET-sessionstillstånd för Azure Cache for RedisASP.NET Session State Provider for Azure Cache for Redis

Azure cache för Redis innehåller en provider för sessionstillstånd som du kan använda för att lagra sessionens tillstånd i minnet med Azure cache för Redis i stället för en SQL Server databas.Azure Cache for Redis provides a session state provider that you can use to store your session state in-memory with Azure Cache for Redis instead of a SQL Server database. Om du vill använda providern för sessionstillstånd för cachelagring måste du först konfigurera cachen och sedan konfigurera ditt ASP.NET-program för cachelagring med Azure-cache för Redis NuGet-paketet.To use the caching session state provider, first configure your cache, and then configure your ASP.NET application for cache using the Azure Cache for Redis Session State NuGet package. För ASP.NET Core program, Läs session-och tillstånds hantering i ASP.net Core.For ASP.NET Core applications, read Session and state management in ASP.NET Core.

Det är ofta inte praktiskt i en verklig molnbaserad app att undvika att lagra någon form av tillstånd för en användarsession, men vissa metoder påverkar prestanda och skalbarhet mer än andra.It's often not practical in a real-world cloud app to avoid storing some form of state for a user session, but some approaches impact performance and scalability more than others. Om du behöver lagra tillstånd är den bästa lösningen att behålla mängden State Small och lagra den i cookies.If you have to store state, the best solution is to keep the amount of state small and store it in cookies. Om det inte är möjligt är nästa bästa lösning att använda ASP.NET-sessionstillstånd med en provider för distribuerad minnes intern cache.If that isn't feasible, the next best solution is to use ASP.NET session state with a provider for distributed, in-memory cache. Den värsta lösningen från en prestanda-och skalbarhet är att använda en databas som har säkerhetskopierats i ett sessionstillstånd.The worst solution from a performance and scalability standpoint is to use a database backed session state provider. Det här avsnittet innehåller information om hur du använder ASP.NET-providern för sessionstillstånd för Azure cache för Redis.This topic provides guidance on using the ASP.NET Session State Provider for Azure Cache for Redis. Information om andra sessionstillstånds alternativ finns i ASP.net alternativ för sessionstillstånd.For information on other session state options, see ASP.NET Session State options.

Lagra ASP.NET-sessionstillstånd i cachenStore ASP.NET session state in the cache

Om du vill konfigurera ett klient program i Visual Studio med hjälp av NuGet-paketet Azure cache för Redis session State, klickar du på NuGet Package Manager , Package Manager-konsolen på menyn verktyg .To configure a client application in Visual Studio using the Azure Cache for Redis Session State NuGet package, click NuGet Package Manager , Package Manager Console from the Tools menu.

Kör följande kommando från fönstret Package Manager Console.Run the following command from the Package Manager Console window.

Install-Package Microsoft.Web.RedisSessionStateProvider

Viktigt

Om du använder kluster funktionen från Premium-nivån måste du använda RedisSessionStateProvider 2.0.1 eller högre, annars genereras ett undantag.If you are using the clustering feature from the premium tier, you must use RedisSessionStateProvider 2.0.1 or higher or an exception is thrown. Att flytta till 2.0.1 eller högre är en avbrytande ändring. Mer information finns i v 2.0.0-brytande ändrings information.Moving to 2.0.1 or higher is a breaking change; for more information, see v2.0.0 Breaking Change Details. Vid uppdateringen av den här artikeln är den aktuella versionen av det här paketet 2.2.3.At the time of this article update, the current version of this package is 2.2.3.

Redis NuGet-paketet för sessionstillstånd har ett beroende av paketet StackExchange. Redis. StrongName.The Redis Session State Provider NuGet package has a dependency on the StackExchange.Redis.StrongName package. Om paketet StackExchange. Redis. StrongName inte finns i projektet är det installerat.If the StackExchange.Redis.StrongName package is not present in your project, it is installed.

Anteckning

Förutom det starkt namngivna StackExchange. Redis. StrongName-paketet finns även StackExchange. Redis-versionen som inte är starkt namngiven.In addition to the strong-named StackExchange.Redis.StrongName package, there is also the StackExchange.Redis non-strong-named version. Om ditt projekt använder den icke-starkt namngivna StackExchange. Redis-versionen måste du avinstallera den, annars får du namn konflikter i projektet.If your project is using the non-strong-named StackExchange.Redis version you must uninstall it, otherwise you get naming conflicts in your project. Mer information om dessa paket finns i Konfigurera .net-cache-klienter.For more information about these packages, see Configure .NET cache clients.

NuGet-paketet hämtar och lägger till de sammansättnings referenser som krävs och lägger till följande avsnitt i web.config-filen.The NuGet package downloads and adds the required assembly references and adds the following section into your web.config file. Det här avsnittet innehåller den konfiguration som krävs för ditt ASP.NET-program för att använda Azure-cache för Redis-providern för sessionstillstånd.This section contains the required configuration for your ASP.NET application to use the Azure Cache for Redis Session State Provider.

<sessionState mode="Custom" customProvider="MySessionStateStore">
  <providers>
    <!-- Either use 'connectionString' OR 'settingsClassName' and 'settingsMethodName' OR use 'host','port','accessKey','ssl','connectionTimeoutInMilliseconds' and 'operationTimeoutInMilliseconds'. -->
    <!-- 'throwOnError','retryTimeoutInMilliseconds','databaseId' and 'applicationName' can be used with both options. -->
    <!--
      <add name="MySessionStateStore" 
        host = "127.0.0.1" [String]
        port = "" [number]
        accessKey = "" [String]
        ssl = "false" [true|false]
        throwOnError = "true" [true|false]
        retryTimeoutInMilliseconds = "5000" [number]
        databaseId = "0" [number]
        applicationName = "" [String]
        connectionTimeoutInMilliseconds = "5000" [number]
        operationTimeoutInMilliseconds = "1000" [number]
        connectionString = "<Valid StackExchange.Redis connection string>" [String]
        settingsClassName = "<Assembly qualified class name that contains settings method specified below. Which basically return 'connectionString' value>" [String]
        settingsMethodName = "<Settings method should be defined in settingsClass. It should be public, static, does not take any parameters and should have a return type of 'String', which is basically 'connectionString' value.>" [String]
        loggingClassName = "<Assembly qualified class name that contains logging method specified below>" [String]
        loggingMethodName = "<Logging method should be defined in loggingClass. It should be public, static, does not take any parameters and should have a return type of System.IO.TextWriter.>" [String]
        redisSerializerType = "<Assembly qualified class name that implements Microsoft.Web.Redis.ISerializer>" [String]
      />
    -->
    <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider"
         host=""
         accessKey=""
         ssl="true" />
  </providers>
</sessionState>

Avsnittet kommenterat innehåller ett exempel på attribut och exempel inställningar för varje attribut.The commented section provides an example of the attributes and sample settings for each attribute.

Konfigurera attributen med värdena från ditt cache-blad i Microsoft Azure-portalen och konfigurera de andra värdena efter behov.Configure the attributes with the values from your cache blade in the Microsoft Azure portal, and configure the other values as desired. Anvisningar om hur du kommer åt dina cache-egenskaper finns i Konfigurera Azure cache för Redis-inställningar.For instructions on accessing your cache properties, see Configure Azure Cache for Redis settings.

  • värd – ange din cache-slutpunkt.host – specify your cache endpoint.
  • port – Använd antingen en icke-TLS/SSL-port eller TLS/SSL-port, beroende på TLS-inställningarna.port – use either your non-TLS/SSL port or your TLS/SSL port, depending on the TLS settings.
  • accessKey – Använd antingen den primära eller sekundära nyckeln för din cache.accessKey – use either the primary or secondary key for your cache.
  • SSL – sant om du vill skydda cache-/klient kommunikation med TLS; annars falskt.ssl – true if you want to secure cache/client communications with TLS; otherwise false. Se till att ange rätt port.Be sure to specify the correct port.
    • Icke-TLS-porten är inaktive rad som standard för nya cacheminnen.The non-TLS port is disabled by default for new caches. Ange True för att den här inställningen ska använda TLS-porten.Specify true for this setting to use the TLS port. Mer information om hur du aktiverar icke-TLS-porten finns i avsnittet åtkomst portar i avsnittet Konfigurera ett cacheminne .For more information about enabling the non-TLS port, see the Access Ports section in the Configure a cache topic.
  • throwOnError – sant om du vill att ett undantag ska genereras om det uppstår ett fel eller falskt om du vill att åtgärden ska Miss lyckas tyst.throwOnError – true if you want an exception to be thrown if there is a failure, or false if you want the operation to fail silently. Du kan kontrol lera om det finns ett problem genom att kontrol lera den statiska Microsoft. Web. Redis. RedisSessionStateProvider. LastException-egenskapen.You can check for a failure by checking the static Microsoft.Web.Redis.RedisSessionStateProvider.LastException property. Standardvärdet är true.The default is true.
  • retryTimeoutInMilliseconds – åtgärder som inte kan utföras på nytt under det här intervallet anges i millisekunder.retryTimeoutInMilliseconds – Operations that fail are retried during this interval, specified in milliseconds. Det första omförsöket sker efter 20 millisekunder och nya försök görs varje sekund tills retryTimeoutInMilliseconds-intervallet upphör att gälla.The first retry occurs after 20 milliseconds, and then retries occur every second until the retryTimeoutInMilliseconds interval expires. Omedelbart efter det här intervallet görs ett nytt försök att utföra åtgärden en sista gång.Immediately after this interval, the operation is retried one final time. Om åtgärden fortfarande Miss lyckas, genereras undantaget tillbaka till anroparen, beroende på inställningen för throwOnError.If the operation still fails, the exception is thrown back to the caller, depending on the throwOnError setting. Standardvärdet är 0, vilket innebär inga återförsök.The default value is 0, which means no retries.
  • databaseId – anger vilken databas som ska användas för cachelagring av utdata.databaseId – Specifies which database to use for cache output data. Om inget värde anges används standardvärdet 0.If not specified, the default value of 0 is used.
  • applicationName – nycklarna lagras i Redis som {<Application Name>_<Session ID>}_Data .applicationName – Keys are stored in redis as {<Application Name>_<Session ID>}_Data. Detta namngivnings schema gör att flera program kan dela samma Redis-instans.This naming scheme enables multiple applications to share the same Redis instance. Den här parametern är valfri, och om du inte anger den används inget standardvärde.This parameter is optional and if you do not provide it a default value is used.
  • connectionTimeoutInMilliseconds – med den här inställningen kan du åsidosätta inställningen ConnectTimeout i stackexchange. Redis-klienten.connectionTimeoutInMilliseconds – This setting allows you to override the connectTimeout setting in the StackExchange.Redis client. Om inget värde anges används standard connectTimeout-inställningen 5000.If not specified, the default connectTimeout setting of 5000 is used. Mer information finns i konfigurations modellen för stackexchange. Redis.For more information, see StackExchange.Redis configuration model.
  • operationTimeoutInMilliseconds – med den här inställningen kan du åsidosätta inställningen SyncTimeout i stackexchange. Redis-klienten.operationTimeoutInMilliseconds – This setting allows you to override the syncTimeout setting in the StackExchange.Redis client. Om inget värde anges används standard syncTimeout-inställningen 1000.If not specified, the default syncTimeout setting of 1000 is used. Mer information finns i konfigurations modellen för stackexchange. Redis.For more information, see StackExchange.Redis configuration model.
  • redisSerializerType – med den här inställningen kan du ange anpassad serialisering av sessionens innehåll som skickas till Redis.redisSerializerType - This setting allows you to specify custom serialization of session content that is sent to Redis. Den typ som anges måste implementera Microsoft.Web.Redis.ISerializer och måste deklarera en offentlig parameter lös konstruktor.The type specified must implement Microsoft.Web.Redis.ISerializer and must declare public parameterless constructor. Som standard System.Runtime.Serialization.Formatters.Binary.BinaryFormatter används.By default System.Runtime.Serialization.Formatters.Binary.BinaryFormatter is used.

Mer information om dessa egenskaper finns i det ursprungliga blogg inlägget för att presentera ASP.net-providern för Redis.For more information about these properties, see the original blog post announcement at Announcing ASP.NET Session State Provider for Redis.

Glöm inte att kommentera ut avsnittet standard InProc-Provider för sessionstillstånd i din web.config.Don’t forget to comment out the standard InProc session state provider section in your web.config.

<!-- <sessionState mode="InProc"
     customProvider="DefaultSessionProvider">
     <providers>
        <add name="DefaultSessionProvider"
              type="System.Web.Providers.DefaultSessionStateProvider,
                    System.Web.Providers, Version=1.0.0.0, Culture=neutral,
                    PublicKeyToken=31bf3856ad364e35"
              connectionStringName="DefaultConnection" />
      </providers>
</sessionState> -->

När dessa steg har utförts är ditt program konfigurerat för att använda Azure-cachen för Redis för sessionstillstånd.Once these steps are performed, your application is configured to use the Azure Cache for Redis Session State Provider. När du använder sessionstillstånd i ditt program lagras det i en Azure-cache för Redis-instans.When you use session state in your application, it is stored in an Azure Cache for Redis instance.

Viktigt

Data som lagras i cachen måste kunna serialiseras, till skillnad från de data som kan lagras i standardprovidern för ASP.NET i minnet.Data stored in the cache must be serializable, unlike the data that can be stored in the default in-memory ASP.NET Session State Provider. När providern för sessionstillstånd för Redis används, se till att de data typer som lagras i sessionstillstånd är serialiserbar.When the Session State Provider for Redis is used, be sure that the data types that are being stored in session state are serializable.

Tillstånds alternativ för ASP.NETASP.NET Session State options

  • I lagringsprovider för sessionstillstånd – den här providern lagrar sessionstillståndet i minnet.In Memory Session State Provider - This provider stores the Session State in memory. Fördelen med att använda den här providern är att det är enkelt och snabbt.The benefit of using this provider is it is simple and fast. Du kan dock inte skala dina Web Apps om du använder i minnes leverantören eftersom den inte är distribuerad.However you cannot scale your Web Apps if you are using in memory provider since it is not distributed.
  • Provider för SQL Server-sessionstillstånd – denna provider lagrar sessionstillståndet i SQL Server.Sql Server Session State Provider - This provider stores the Session State in Sql Server. Använd den här providern om du vill lagra sessionstillståndet i beständig lagring.Use this provider if you want to store the Session state in persistent storage. Du kan skala din webbapp, men att använda SQL Server för session har en prestanda påverkan på din webbapp.You can scale your Web App but using Sql Server for Session has a performance impact on your Web App. Du kan också använda providern med en InMemory OLTP-konfiguration för att förbättra prestanda.You can also use this provider with an In-Memory OLTP configuration to help improve performance.
  • Distribuerat i tillstånds leverantör för sessionstillstånd, till exempel Azure cache för Redis-providern för sessionstillstånd – den här leverantören ger dig det bästa av båda världar.Distributed In Memory Session State Provider such as Azure Cache for Redis Session State Provider - This provider gives you the best of both worlds. Din webbapp kan ha en enkel, snabb och skalbar session för sessionstillstånd.Your Web App can have a simple, fast, and scalable Session State Provider. Eftersom den här providern lagrar sessionstillståndet i en cache måste din app ta hänsyn till alla egenskaper som är associerade med att kommunicera med en distribuerad minnes-cache, till exempel tillfälliga nätverks haverier.Because this provider stores the Session state in a Cache, your app has to take in consideration all the characteristics associated when talking to a Distributed In Memory Cache, such as transient network failures. Bästa praxis om hur du använder cache finns i Guide för cachelagring från Microsoft patterns & praxis Azure Cloud Application design och implementerings vägledning.For best practices on using Cache, see Caching guidance from Microsoft Patterns & Practices Azure Cloud Application Design and Implementation Guidance.

Mer information om sessionstillstånd och andra bästa metoder finns i metod tips för webb utveckling (skapa Real-World molnappar med Azure).For more information about session state and other best practices, see Web Development Best Practices (Building Real-World Cloud Apps with Azure).

Providers för sessionstillstånd från tredje partThird-party session state providers

Nästa stegNext steps

Kolla in ASP.net output cache Provider för Azure cache för Redis.Check out the ASP.NET Output Cache Provider for Azure Cache for Redis.