Azure için Redis Cache için ASP.NET Oturum Durumu Sağlayıcısı

Redis için Azure Cache, oturum durumunu bir veritabanı yerine oturum durumunu bellek içinde depolamak için kullanabileceğiniz Redis için Azure Cache durumu sağlayıcısı SQL Server sağlar. Önbelleğe alma oturumu durum sağlayıcısını kullanmak için önce önbelleğinizi yapılandırmanız ve ardından ASP.NET oturum Redis için Azure Cache için NuGet yapılandırmanız gerekir. Daha ASP.NET Core için, ASP.NET Core'de oturum ve durum yönetimi makalelerini okuyun.

Gerçek dünya bulut uygulamasında kullanıcı oturumu için bir tür durum depolamayı önlemek genellikle pratik değildir, ancak bazı yaklaşımlar performansı ve ölçeklenebilirliği diğerlerine göre daha çok etkiler. Durumu depolamalısanız en iyi çözüm, durum miktarını küçük tutmak ve tanımlama bilgisinde depolamaktır. Bu mümkün değilse, bir sonraki en iyi çözüm dağıtılmış, bellek ASP.NET sağlayıcı ile oturum durumunu kullanmaktır. Performans ve ölçeklenebilirlik açısından en kötü çözüm, veritabanı tarafından arkalı oturum durumu sağlayıcısı kullanmaktır. Bu konuda, ASP.NET için ASP.NET Durum Sağlayıcısı'nın kullanımıyla ilgili Redis için Azure Cache. Diğer oturum durumu seçenekleri hakkında bilgi için bkz. ASP.NET Durumu seçenekleri.

Önbellekte ASP.NET oturumu durumu depolama

Redis için Azure Cache Session State NuGet paketini kullanarak Visual Studio uygulamasında bir istemci uygulaması yapılandırmak için Araçlar menüsünden NuGet Paket Yöneticisi, Paket Yöneticisi Konsolu'nu seçin.

Package Manager Console penceresinden aşağıdaki komutu çalıştırın.

Install-Package Microsoft.Web.RedisSessionStateProvider

Önemli

Premium katmandan kümeleme özelliğini kullanıyorsanız RedisSessionStateProvider 2.0.1 veya daha yüksek bir değer kullansanız veya bir özel durum oluşturursanız. 2.0.1 veya daha yüksek bir değere taşınmak, yeni bir değişikliktir; Daha fazla bilgi için bkz. v2.0.0 Yeni Değişiklik Ayrıntıları. Bu makale güncelleştirmesi zamanında, bu paketin geçerli sürümü 2.2.3'dür.

Redis Oturum Durumu Sağlayıcısı NuGet StackExchange.Redis paketine bağımlıdır. StackExchange.Redis paketi projeniz içinde yoksa yüklenir.

Bu NuGet, gerekli derleme başvurularını indirir ve ekler ve aşağıdaki bölümü web.config ekler. Bu bölüm, oturum uygulamanıza oturum ASP.NET için gerekli yapılandırmayı Redis için Azure Cache yapılandırmayı içerir.

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

Açıklamalı bölümde, her öznitelik için öznitelikler ve örnek ayarların bir örneği yer almaktadır.

Öznitelikleri, Microsoft Azure portalında önbelleğinizin sol tarafından sol tarafta yer alan değerlerle ve diğer değerleri istediğiniz gibi yapılandırabilirsiniz. Önbellek özelliklerinize erişme yönergeleri için bkz. Redis için Azure Cache yapılandırma.

  • host : Önbellek uç noktanızı belirtin.
  • bağlantı noktası – TLS ayarlarına bağlı olarak TLS/SSL olmayan bağlantı noktası veya TLS/SSL bağlantı noktası kullanın.
  • accessKey: Önbelleğiniz için birincil veya ikincil anahtarı kullanın.
  • ssl – TLS ile önbellek/istemci iletişiminin güvenliğini sağlamak için true; aksi takdirde false. Doğru bağlantı noktasını belirttiğinizden emin olun.
    • TLS olmayan bağlantı noktası, yeni önbellekler için varsayılan olarak devre dışıdır. TlS bağlantı noktasını kullanmak için bu ayar için true belirtin. TLS olmayan bağlantı noktasını etkinleştirme hakkında daha fazla bilgi için Önbellek yapılandırma konusunun Erişim Bağlantı Noktaları bölümüne bakın.
  • throwOnError : bir hata olması durumunda bir özel durumun veya sessiz bir şekilde başarısız olması için false'un 900'den fazla olması durumunda true olur. Statik Microsoft.Web.Redis.RedisSessionStateProvider.LastException özelliğini kontrol ederek hata olup olamı kontrol edin. Varsayılan değer true'dır.
  • retryTimeoutInMilliseconds – Bu aralık sırasında başarısız olan işlemler milisaniye cinsinden belirtilir. İlk yeniden deneme 20 milisaniye sonra gerçekleşir ve retryTimeoutInMilliseconds aralığının süresi dolana kadar her saniye yeniden denemeler gerçekleşir. Bu aralık sonrasında işlem son bir kez yeniden denenr. İşlem yine başarısız olursa throwOnError ayarına bağlı olarak özel durum çağıra geri döndürülür. Varsayılan değer 0'dır, yani yeniden deneme yoktur.
  • databaseId: Önbellek çıktı verileri için hangi veritabanının kullanılamayacaklarını belirtir. Belirtilmezse, varsayılan 0 değeri kullanılır.
  • applicationName – Anahtarlar redis'te olarak {<Application Name>_<Session ID>}_Data depolanır. Bu adlandırma düzeni, birden çok uygulamanın aynı Redis örneğini paylaşmalarına olanak sağlar. Bu parametre isteğe bağlıdır ve sağlamadısanız varsayılan değer kullanılır.
  • connectionTimeoutInMilliseconds – Bu ayar StackExchange.Redis istemcisinde connectTimeout ayarını geçersiz kılmanıza olanak sağlar. Belirtilmezse, varsayılan 5000 connectTimeout ayarı kullanılır. Daha fazla bilgi için bkz. StackExchange.Redis yapılandırma modeli.
  • operationTimeoutInMilliseconds – Bu ayar StackExchange.Redis istemcisinde syncTimeout ayarını geçersiz kılmaya olanak sağlar. Belirtilmezse, 1000 varsayılan syncTimeout ayarı kullanılır. Daha fazla bilgi için bkz. StackExchange.Redis yapılandırma modeli.
  • redisSerializerType - Bu ayar Redis'e gönderilen oturum içeriğinin özel serileştirmesi belirtmenize olanak sağlar. Belirtilen tür, genel Microsoft.Web.Redis.ISerializer parametresiz oluşturucu uygulamalı ve bildirilmelidir. Varsayılan olarak System.Runtime.Serialization.Formatters.Binary.BinaryFormatter kullanılır.

Bu özellikler hakkında daha fazla bilgi için Redis için Oturum Durumu Sağlayıcısı'nın duyurusu ASP.NET blog gönderisi duyurusuna bakın.

Oturumlar sayfanıza standart InProc oturum durumu sağlayıcısı bölümünü açıklama 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> -->

Bu adımlar uygulandıktan sonra, uygulamanız Oturum Durumu Sağlayıcısı'Redis için Azure Cache kullanmak üzere yapılandırılır. Uygulamanıza oturum durumunu kullanarak bir Redis için Azure Cache.

Önemli

Oturum Durumu Sağlayıcısı'nda varsayılan bellek içinde depolanabilir verilerin aksine, önbellekte depolanan veriler serileştirilebilir ASP.NET gerekir. Redis için Oturum Durumu Sağlayıcısı kullanılırken, oturum durumda depolanan veri türlerinin seri hale getirilebilir olduğundan emin olun.

ASP.NET Oturum Durumu seçenekleri

  • Bellek Oturum Durumu Sağlayıcısı' içinde - Bu sağlayıcı Oturum Durumunu bellekte depolar. Bu sağlayıcıyı kullanmanın avantajı, basit ve hızlı bir hizmettir. Ancak, bellek sağlayıcısında Web Apps dağıtılmayıldığından, uygulamalarınızı ölçeklendirebilirsiniz.
  • Sql Server Oturum Durumu Sağlayıcısı - Bu sağlayıcı, Oturum Durumunu Sql Server'da depolar. Oturum durumunu kalıcı depolamada depolamak için bu sağlayıcıyı kullanın. Web Uygulamanızı ölçeklendirebilirsiniz, ancak Oturum için Sql Server'ı kullanmak Web Uygulamanıza bir performans etkisi sağlar. Performansın iyileştirilmesine yardımcı olmak için bu sağlayıcıyı bellek içinde OLTP yapılandırmasıyla da kullanabilirsiniz.
  • Redis için Azure Cache Oturum Durumu Sağlayıcısı gibi Bellekte Dağıtılmış Oturum Durumu Sağlayıcısı - Bu sağlayıcı her iki dünyanın da en iyilerini sağlar. Web Uygulamanız basit, hızlı ve ölçeklenebilir bir Oturum Durumu Sağlayıcısına sahip olabilir. Bu sağlayıcı Oturum durumunu önbellekte depolayana kadar, geçici ağ hataları gibi Bir Dağıtılmış Bellek Önbelleği ile konuşurken ilişkili tüm özellikleri göz önünde bulundurmalıdır. Önbelleği kullanmayla ilgili en iyi yöntemler için Microsoft Önbelleğe Alma Patterns & Practices Azure Cloud Application Design and Implementation Guidance (Microsoft Patterns & Practices Azure Cloud Application Design and Implementation Guidance ) makalesini ziyaret edin.

Oturum durumu ve diğer en iyi yöntemler hakkında daha fazla bilgi için bkz. Web Geliştirme En İyi Yöntemleri (Azure ile Real-World Cloud Apps'i Geliştirme).

Üçüncü taraf oturum durumu sağlayıcıları

Sonraki adımlar

Redis için Azure Cache için ASP.NET Çıktı Önbelleği Sağlayıcısı'Redis için Azure Cache.