ASP.NET-sessiestatusprovider voor Azure Cache voor RedisASP.NET Session State Provider for Azure Cache for Redis

Azure cache voor redis biedt een sessie status provider die u kunt gebruiken om de sessie status in het geheugen op te slaan met Azure cache voor redis in plaats van een SQL Server-Data Base.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. Als u de provider voor cache sessie status wilt gebruiken, moet u eerst uw cache configureren en vervolgens uw ASP.NET-toepassing configureren voor cache met behulp van het Azure-cache geheugen voor de redis-sessie status NuGet-pakket.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.

Het is vaak niet praktisch in een echte Cloud-app om te voor komen dat u een vorm van status voor een gebruikers sessie opslaat, maar sommige benaderingen beïnvloeden de prestaties en schaal baarheid meer dan andere.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. Als u de status wilt opslaan, is de beste oplossing om de hoeveelheid status laag te bewaren en op te slaan in cookies.If you have to store state, the best solution is to keep the amount of state small and store it in cookies. Als dat niet haalbaar is, is de volgende beste oplossing om de ASP.NET-sessie status te gebruiken met een provider voor gedistribueerde, in-memory 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. De slechtste oplossing van een oogpunt van prestaties en schaal baarheid is het gebruik van een Data Base-back-up van de sessie status.The worst solution from a performance and scalability standpoint is to use a database backed session state provider. Dit onderwerp bevat richt lijnen voor het gebruik van de ASP.NET-sessie status provider voor Azure cache voor redis.This topic provides guidance on using the ASP.NET Session State Provider for Azure Cache for Redis. Zie ASP.net session status Options(Engelstalig) voor meer informatie over andere sessie status opties.For information on other session state options, see ASP.NET Session State options.

De ASP.NET-sessiestatus in de cache opslaanStore ASP.NET session state in the cache

Als u in Visual Studio een client toepassing wilt configureren met behulp van het Azure-cache geheugen voor de redis-sessie status NuGet-pakket, klikt u op NuGet package manager, Package Manager console in het menu extra .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.

Voer de volgende opdracht uit vanuit het venster Package Manager Console.Run the following command from the Package Manager Console window.

Install-Package Microsoft.Web.RedisSessionStateProvider

Belangrijk

Als u gebruikmaakt van de cluster functie uit de Premium-laag, moet u RedisSessionStateProvider 2.0.1 of hoger gebruiken, anders wordt er een uitzonde ring gegenereerd.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. Verplaatsen naar 2.0.1 of hoger is een belang rijke wijziging; Zie v 2.0.0 break Change Details(Engelstalig) voor meer informatie.Moving to 2.0.1 or higher is a breaking change; for more information, see v2.0.0 Breaking Change Details. Op het moment van de update van dit artikel is 2.2.3 de huidige versie van dit pakket.At the time of this article update, the current version of this package is 2.2.3.

Het NuGet-pakket van de redis-sessie status provider heeft een afhankelijkheid van het pakket stack Exchange. redis. Strongname.The Redis Session State Provider NuGet package has a dependency on the StackExchange.Redis.StrongName package. Als het pakket stack Exchange. redis. Strongname niet aanwezig is in uw project, wordt het geïnstalleerd.If the StackExchange.Redis.StrongName package is not present in your project, it is installed.

Notitie

Naast het pakket met de sterke naam stack Exchange. redis. Strongname is er ook de versie stack Exchange. redis zonder sterke naam.In addition to the strong-named StackExchange.Redis.StrongName package, there is also the StackExchange.Redis non-strong-named version. Als uw project de niet-sterke naam stack Exchange. redis-versie gebruikt, moet u dit verwijderen, anders krijgt u een naam conflict in uw project.If your project is using the non-strong-named StackExchange.Redis version you must uninstall it, otherwise you get naming conflicts in your project. Zie .NET-cache-clients configurerenvoor meer informatie over deze pakketten.For more information about these packages, see Configure .NET cache clients.

Het NuGet-pakket downloadt en voegt de vereiste assembly-verwijzingen toe en voegt de volgende sectie toe aan het bestand Web. config.The NuGet package downloads and adds the required assembly references and adds the following section into your web.config file. Deze sectie bevat de vereiste configuratie voor uw ASP.NET-toepassing voor het gebruik van de Azure-cache voor de redis-sessie status provider.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>

De sectie met opmerkingen bevat een voor beeld van de kenmerken en voorbeeld instellingen voor elk kenmerk.The commented section provides an example of the attributes and sample settings for each attribute.

Configureer de kenmerken met de waarden van uw cache-Blade in de Microsoft Azure-portal en configureer de andere waarden naar wens.Configure the attributes with the values from your cache blade in the Microsoft Azure portal, and configure the other values as desired. Zie voor instructies over het verkrijgen van toegang tot uw cache-eigenschappen Azure cache configureren voor redis-instellingen.For instructions on accessing your cache properties, see Configure Azure Cache for Redis settings.

  • host : Geef uw cache-eind punt op.host – specify your cache endpoint.
  • poort : gebruik een niet-SSL-poort of uw SSL-poort, afhankelijk van de SSL-instellingen.port – use either your non-SSL port or your SSL port, depending on the ssl settings.
  • accessKey : gebruik de primaire of secundaire sleutel voor uw cache.accessKey – use either the primary or secondary key for your cache.
  • SSL – True als u de cache/client communicatie met SSL wilt beveiligen; anders false.ssl – true if you want to secure cache/client communications with ssl; otherwise false. Zorg ervoor dat u de juiste poort opgeeft.Be sure to specify the correct port.
    • De poort zonder SSL-beveiliging is standaard uitgeschakeld voor nieuwe caches.The non-SSL port is disabled by default for new caches. Geef waar op als u wilt dat deze instelling de SSL-poort gebruikt.Specify true for this setting to use the SSL port. Zie de sectie toegangs poorten in het onderwerp een cache configureren voor meer informatie over het inschakelen van de niet-SSL-poort.For more information about enabling the non-SSL port, see the Access Ports section in the Configure a cache topic.
  • throwOnError – True als u wilt dat een uitzonde ring wordt gegenereerd als er een fout optreedt, of ONWAAR als u wilt dat de bewerking op de achtergrond mislukt.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. U kunt controleren op fouten door de statische eigenschap micro soft. Web. redis. RedisSessionStateProvider. LastException te controleren.You can check for a failure by checking the static Microsoft.Web.Redis.RedisSessionStateProvider.LastException property. De standaard waarde is True.The default is true.
  • retryTimeoutInMilliseconds : bewerkingen waarvoor een failover wordt uitgevoerd, worden tijdens dit interval opnieuw uitgevoerd, opgegeven in milliseconden.retryTimeoutInMilliseconds – Operations that fail are retried during this interval, specified in milliseconds. De eerste nieuwe poging vindt plaats na 20 milliseconden en probeert vervolgens elke seconde opnieuw een poging tot het retryTimeoutInMilliseconds-interval verloopt.The first retry occurs after 20 milliseconds, and then retries occur every second until the retryTimeoutInMilliseconds interval expires. Onmiddellijk na dit interval wordt de bewerking een eind tijd opnieuw uitgevoerd.Immediately after this interval, the operation is retried one final time. Als de bewerking nog steeds mislukt, wordt de uitzonde ring weer geretourneerd naar de aanroeper, afhankelijk van de instelling throwOnError.If the operation still fails, the exception is thrown back to the caller, depending on the throwOnError setting. De standaard waarde is 0, wat betekent dat er geen nieuwe pogingen zijn.The default value is 0, which means no retries.
  • databaseId : Hiermee geeft u de Data Base op die moet worden gebruikt voor de uitvoer gegevens van de cache.databaseId – Specifies which database to use for cache output data. Als u niets opgeeft, wordt de standaard waarde 0 gebruikt.If not specified, the default value of 0 is used.
  • ApplicationName : sleutels worden in redis opgeslagen als {<Application Name>_<Session ID>}_Data.applicationName – Keys are stored in redis as {<Application Name>_<Session ID>}_Data. Met dit naamgevings schema kunnen meerdere toepassingen hetzelfde redis-exemplaar delen.This naming scheme enables multiple applications to share the same Redis instance. Deze para meter is optioneel en als u deze niet opgeeft, wordt de standaard waarde gebruikt.This parameter is optional and if you do not provide it a default value is used.
  • connectionTimeoutInMilliseconds : met deze instelling kunt u de instelling voor connectTimeout in de stack Exchange. redis-client onderdrukken.connectionTimeoutInMilliseconds – This setting allows you to override the connectTimeout setting in the StackExchange.Redis client. Als deze niet is opgegeven, wordt de standaard instelling voor connectTimeout van 5000 gebruikt.If not specified, the default connectTimeout setting of 5000 is used. Zie het configuratie model stack Exchange. redisvoor meer informatie.For more information, see StackExchange.Redis configuration model.
  • operationTimeoutInMilliseconds : met deze instelling kunt u de instelling voor syncTimeout in de stack Exchange. redis-client onderdrukken.operationTimeoutInMilliseconds – This setting allows you to override the syncTimeout setting in the StackExchange.Redis client. Als deze niet is opgegeven, wordt de standaard instelling voor syncTimeout van 1000 gebruikt.If not specified, the default syncTimeout setting of 1000 is used. Zie het configuratie model stack Exchange. redisvoor meer informatie.For more information, see StackExchange.Redis configuration model.
  • redisSerializerType : met deze instelling kunt u aangepaste serialisatie van sessie-inhoud opgeven die wordt verzonden naar redis.redisSerializerType - This setting allows you to specify custom serialization of session content that is sent to Redis. Het opgegeven type moet Microsoft.Web.Redis.ISerializer implementeren en moet een open bare constructor zonder para meters declareren.The type specified must implement Microsoft.Web.Redis.ISerializer and must declare public parameterless constructor. Standaard System.Runtime.Serialization.Formatters.Binary.BinaryFormatter wordt gebruikt.By default System.Runtime.Serialization.Formatters.Binary.BinaryFormatter is used.

Zie voor meer informatie over deze eigenschappen de oorspronkelijke blog post-aankondiging bij het aankondigen van de ASP.net-sessie status provider voor redis.For more information about these properties, see the original blog post announcement at Announcing ASP.NET Session State Provider for Redis.

Vergeet niet om een opmerking uit te checken in het gedeelte met de standaard InProc-sessie status van de 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> -->

Zodra deze stappen zijn uitgevoerd, wordt uw toepassing geconfigureerd voor het gebruik van de Azure-cache voor de redis-sessie status provider.Once these steps are performed, your application is configured to use the Azure Cache for Redis Session State Provider. Wanneer u de sessie status in uw toepassing gebruikt, wordt deze opgeslagen in een Azure-cache voor redis-exemplaar.When you use session state in your application, it is stored in an Azure Cache for Redis instance.

Belangrijk

Gegevens die in de cache zijn opgeslagen, moeten serialiseerbaar zijn, in tegens telling tot de gegevens die kunnen worden opgeslagen in de standaard waarde voor de ASP.NET-sessie status provider in het geheugen.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. Wanneer de sessie status provider voor redis wordt gebruikt, moet u ervoor zorgen dat de gegevens typen die worden opgeslagen in de sessie status serialiseerbaar zijn.When the Session State Provider for Redis is used, be sure that the data types that are being stored in session state are serializable.

Opties voor de sessie status van ASP.NETASP.NET Session State options

  • In de geheugen sessie status provider: deze provider slaat de sessie status op in het geheugen.In Memory Session State Provider - This provider stores the Session State in memory. Het voor deel van het gebruik van deze provider is eenvoudig en snel.The benefit of using this provider is it is simple and fast. U kunt uw Web Apps echter niet schalen als u in de geheugen provider gebruikt, omdat deze niet is gedistribueerd.However you cannot scale your Web Apps if you are using in memory provider since it is not distributed.
  • SQL Server-sessie status provider: deze provider slaat de sessie status op in SQL Server.Sql Server Session State Provider - This provider stores the Session State in Sql Server. Gebruik deze provider als u de sessie status wilt opslaan in permanente opslag.Use this provider if you want to store the Session state in persistent storage. U kunt uw web-app schalen, maar het gebruik van SQL Server voor de sessie heeft invloed op de prestaties van uw web-app.You can scale your Web App but using Sql Server for Session has a performance impact on your Web App. U kunt deze provider ook gebruiken met een OLTP-configuratie in het geheugen om de prestaties te verbeteren.You can also use this provider with an In-Memory OLTP configuration to help improve performance.
  • Gedistribueerd in de geheugen sessie status provider, zoals Azure cache voor redis-sessie status provider-deze provider biedt u het beste van beide werelden.Distributed In Memory Session State Provider such as Azure Cache for Redis Session State Provider - This provider gives you the best of both worlds. Uw web-app kan een eenvoudige, snelle en schaal bare sessie status provider hebben.Your Web App can have a simple, fast, and scalable Session State Provider. Omdat deze provider de sessie status opslaat in een cache, moet uw app rekening houden met alle kenmerken die zijn gekoppeld aan een gedistribueerd in de geheugen cache, zoals tijdelijke netwerk storingen.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. Zie voor aanbevolen procedures voor het gebruik van cache de richt lijnen voor caching van micro soft patronen & procedures Azure Cloud Application Design and implementation guidance(Engelstalig).For best practices on using Cache, see Caching guidance from Microsoft Patterns & Practices Azure Cloud Application Design and Implementation Guidance.

Zie voor meer informatie over de sessie status en andere aanbevolen procedures webontwikkeling best practices (buil ding Real-World Cloud apps with Azure).For more information about session state and other best practices, see Web Development Best Practices (Building Real-World Cloud Apps with Azure).

Volgende stappenNext steps

Bekijk de ASP.net-uitvoer cache provider voor Azure cache voor redis.Check out the ASP.NET Output Cache Provider for Azure Cache for Redis.