ASP.NET för cachelagring för Azure cache för RedisASP.NET Output Cache Provider for Azure Cache for Redis

Redis för utdata är en process som är utanför processen för cachelagring av utdata.The Redis Output Cache Provider is an out-of-process storage mechanism for output cache data. Dessa data är specifika för fullständiga HTTP-svar (cachelagring av sidutdata).This data is specifically for full HTTP responses (page output caching). Providern ansluts till den nya utöknings punkten för utdataports-providern som introducerades i ASP.NET 4.The provider plugs into the new output cache provider extensibility point that was introduced in ASP.NET 4. För ASP.NET Core program kan du läsa cachelagring av svar i ASP.net Core.For ASP.NET Core applications, read Response caching in ASP.NET Core.

Om du vill använda Redis måste du först konfigurera cachen och sedan konfigurera ditt ASP.NET-program med Redis output cache Provider NuGet-paketet.To use the Redis Output Cache Provider, first configure your cache, and then configure your ASP.NET application using the Redis Output Cache Provider NuGet package. Det här avsnittet innehåller information om hur du konfigurerar ditt program att använda Redis-providern för utdata.This topic provides guidance on configuring your application to use the Redis Output Cache Provider. Mer information om hur du skapar och konfigurerar en Azure-cache för Redis-instans finns i skapa en cache.For more information about creating and configuring an Azure Cache for Redis instance, see Create a cache.

Lagra ASP.NET-sidans utdata i cachenStore ASP.NET page output 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.RedisOutputCacheProvider

NuGet-paketet för Redis-utdatacache har ett beroende av paketet StackExchange. Redis. StrongName.The Redis Output Cache 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. Mer information om NuGet-paketet för Redis-utdatacache finns på sidan RedisOutputCacheProvider NuGet.For more information about the Redis Output Cache Provider NuGet package, see the RedisOutputCacheProvider NuGet page.

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 projektet använder den icke-säkra StackExchange. Redis-versionen måste du avinstallera den. annars kommer du att få namn konflikter i projektet.If your project is using the non-strong-named StackExchange.Redis version you must uninstall it; otherwise, you will experience 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 Redis-providern för utdata.This section contains the required configuration for your ASP.NET application to use the Redis Output Cache Provider.

<caching>
  <outputCache defaultProvider="MyRedisOutputCache">
    <providers>
      <add name="MyRedisOutputCache" type="Microsoft.Web.Redis.RedisOutputCacheProvider"
           host=""
           accessKey=""
           ssl="true" />
    </providers>
  </outputCache>
</caching>

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.

AttributAttribute TypType StandardDefault BeskrivningDescription
värdhost strängstring värd"localhost" IP-adressen eller värd namnet för Redis-servernThe Redis server IP address or host name
lastningport positivt heltalpositive integer 6379 (ej TLS/SSL)6379 (non-TLS/SSL)
6380 (TLS/SSL)6380 (TLS/SSL)
Redis server-portRedis server port
accessKeyaccessKey strängstring """" Redis server-lösenord när Redis-auktorisering har Aktiver ATS.Redis server password when Redis authorization is enabled. Värdet är en tom sträng som standard, vilket innebär att providern för sessionstillstånd inte använder lösen ord när de ansluter till Redis-servern.The value is empty string by default, which means the session state provider won’t use any password when connecting to Redis server. Om din redis-server finns i ett offentligt tillgängligt nätverk som Azure Redis Cache, se till att aktivera Redis-auktorisering för att förbättra säkerheten och ange ett säkert lösen ord.If your Redis server is in a publicly accessible network like Azure Redis Cache, be sure to enable Redis authorization to improve security, and provide a secure password.
SSLssl booleanboolean !false Om du vill ansluta till Redis-servern via TLS.Whether to connect to Redis server via TLS. Värdet är false som standard eftersom Redis inte stöder TLS från rutan.This value is false by default because Redis doesn’t support TLS out of the box. Om du använder Azure Redis Cache som har stöd för SSL från rutan, måste du ange värdet sant för att förbättra säkerheten.If you are using Azure Redis Cache which supports SSL out of the box, be sure to set this to true to improve security.

Icke-TLS-porten är inaktive rad som standard för nya cacheminnen.The non-TLS port is disabled by default for new caches. Ange Sant för den här inställningen om du vill använda en icke-TLS-port.Specify true for this setting to use the non-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.
databaseIdNumberdatabaseIdNumber positivt heltalpositive integer 00 Det här attributet kan bara anges via web.config eller AppSettings.This attribute can be specified only through either web.config or AppSettings.

Ange vilken Redis-databas som ska användas.Specify which Redis database to use.
connectionTimeoutInMillisecondsconnectionTimeoutInMilliseconds positivt heltalpositive integer Tillhandahålls av StackExchange. RedisProvided by StackExchange.Redis Används för att ange ConnectTimeout när du skapar stackexchange. Redis. ConnectionMultiplexer.Used to set ConnectTimeout when creating StackExchange.Redis.ConnectionMultiplexer.
operationTimeoutInMillisecondsoperationTimeoutInMilliseconds positivt heltalpositive integer Tillhandahålls av StackExchange. RedisProvided by StackExchange.Redis Används för att ange SyncTimeout när du skapar stackexchange. Redis. ConnectionMultiplexer.Used to set SyncTimeout when creating StackExchange.Redis.ConnectionMultiplexer.
ConnectionString (giltig anslutnings sträng för stackexchange. Redis)connectionString (Valid StackExchange.Redis connection string) strängstring ej tillämpligtn/a Antingen en parameter referens till AppSettings eller web.config, eller någon annan giltig anslutnings sträng för StackExchange. Redis.Either a parameter reference to AppSettings or web.config, or else a valid StackExchange.Redis connection string. Det här attributet kan ange värden för Host , port , Accesskey , SSL och andra stackexchange. Redis-attribut.This attribute can provide values for host , port , accessKey , ssl , and other StackExchange.Redis attributes. En närmare titt på ConnectionString finns i ställa in ConnectionString i avsnittet attribut anmärkningar .For a closer look at connectionString , see Setting connectionString in the Attribute notes section.
settingsClassNamesettingsClassName
settingsMethodNamesettingsMethodName
strängstring
strängstring
ej tillämpligtn/a Attributen kan endast anges via web.config eller AppSettings.These attributes can be specified only through either web.config or AppSettings.

Använd de här attributen för att ange en anslutnings sträng.Use these attributes to provide a connection string. settingsClassName ska vara ett kvalificerat klass namn för sammansättningen som innehåller den metod som anges av settingsMethodName .settingsClassName should be an assembly qualified class name that contains the method specified by settingsMethodName .

Metoden som anges av settingsMethodName ska vara offentlig, statisk och void (tar inte med parametrar) med en retur sträng typ.The method specified by settingsMethodName should be public, static, and void (not take any parameters), with a return type of string . Den här metoden returnerar den faktiska anslutnings strängen.This method returns the actual connection string.
loggingClassNameloggingClassName
loggingMethodNameloggingMethodName
strängstring
strängstring
ej tillämpligtn/a Attributen kan endast anges via web.config eller AppSettings.These attributes can be specified only through either web.config or AppSettings.

Använd de här attributen för att felsöka ditt program genom att tillhandahålla loggar från session State/utdatacache tillsammans med loggar från StackExchange. Redis.Use these attributes to debug your application by providing logs from Session State/Output Cache along with logs from StackExchange.Redis. loggingClassName ska vara ett kvalificerat klass namn för sammansättningen som innehåller den metod som anges av loggingMethodName .loggingClassName should be an assembly qualified class name that contains the method specified by loggingMethodName .

Metoden som anges av loggingMethodName ska vara offentlig, statisk och void (tar inte med parametrar), med retur typen system. io. TextWriter .The method specified by loggingMethodName should be public, static, and void (not take any parameters), with a return type of System.IO.TextWriter .
applicationNameapplicationName strängstring Namnet på den aktuella processen eller "/"The module name of the current process or "/" Endast SessionStateProviderSessionStateProvider only
Det här attributet kan bara anges via web.config eller AppSettings.This attribute can be specified only through either web.config or AppSettings.

Det App Name-prefix som ska användas i Redis-cache.The app name prefix to use in Redis cache. Kunden kan använda samma Redis-cache för olika användnings sätt.The customer may use the same Redis cache for different purposes. För att säkerställa att sessionsnycklarna inte kolliderar, kan det föregås av programmets namn.To insure that the session keys do not collide, it can be prefixed with the application name.
throwOnErrorthrowOnError booleanboolean truetrue Endast SessionStateProviderSessionStateProvider only
Det här attributet kan bara anges via web.config eller AppSettings.This attribute can be specified only through either web.config or AppSettings.

Om ett undantag ska utlöses när ett fel uppstår.Whether to throw an exception when an error occurs.

Mer information om throwOnError finns i kommentarer om throwOnError i avsnittet Attribute Notes .For more about throwOnError , see Notes on throwOnError in the Attribute notes section.
>Microsoft. Web. Redis. RedisSessionStateProvider. LastException .>Microsoft.Web.Redis.RedisSessionStateProvider.LastException .
retryTimeoutInMillisecondsretryTimeoutInMilliseconds positivt heltalpositive integer 50005000 Endast SessionStateProviderSessionStateProvider only
Det här attributet kan bara anges via web.config eller AppSettings.This attribute can be specified only through either web.config or AppSettings.

Hur lång tid det tar att försöka igen när en åtgärd Miss lyckas.How long to retry when an operation fails. Om det här värdet är mindre än operationTimeoutInMilliseconds kommer providern inte att försöka igen.If this value is less than operationTimeoutInMilliseconds , the provider will not retry.

Mer information om retryTimeoutInMilliseconds finns i kommentarer om retryTimeoutInMilliseconds i avsnittet Attribute Notes .For more about retryTimeoutInMilliseconds , see Notes on retryTimeoutInMilliseconds in the Attribute notes section.
redisSerializerTyperedisSerializerType strängstring ej tillämpligtn/a Anger sammansättningens kvalificerade typnamn för en klass som implementerar Microsoft. Web. Redis.Specifies the assembly qualified type name of a class that implements Microsoft.Web.Redis. ISerializer och som innehåller den anpassade logiken för att serialisera och deserialisera värdena.ISerializer and that contains the custom logic to serialize and deserialize the values. Mer information finns i About redisSerializerType i avsnittet Attribute Notes .For more information, see About redisSerializerType in the Attribute notes section.

Attribut-kommentarerAttribute notes

Ställer in ConnectionStringSetting connectionString

Värdet för ConnectionString används som nyckel för att hämta den faktiska anslutnings strängen från appSettings, om en sådan sträng finns i appSettings.The value of connectionString is used as key to fetch the actual connection string from AppSettings, if such a string exists in AppSettings. Om det inte finns i AppSettings används värdet för ConnectionString som nyckel för att hämta den faktiska anslutnings strängen från web.config ConnectionString -avsnittet om det avsnittet finns.If not found inside AppSettings, the value of connectionString will be used as key to fetch actual connection string from the web.config ConnectionString section, if that section exists. Om anslutnings strängen inte finns i AppSettings eller i avsnittet web.config ConnectionString , används litteralt värde ConnectionString som anslutnings sträng när du skapar stackexchange. Redis. ConnectionMultiplexer.If the connection string does not exists in AppSettings or the web.config ConnectionString section, the literal value of connectionString will be used as the connection string when creating StackExchange.Redis.ConnectionMultiplexer.

I följande exempel visas hur ConnectionString används.The following examples illustrate how connectionString is used.

Exempel 1Example 1

<connectionStrings>
    <add name="MyRedisConnectionString" connectionString="mycache.redis.cache.windows.net:6380,password=actual access key,ssl=True,abortConnect=False" />
</connectionStrings>

I web.config använder du ovanstående nyckel som parameter värde i stället för det faktiska värdet.In web.config, use above key as parameter value instead of actual value.

<sessionState mode="Custom" customProvider="MySessionStateStore">
    <providers>
        <add type = "Microsoft.Web.Redis.RedisSessionStateProvide"
             name = "MySessionStateStore"
             connectionString = "MyRedisConnectionString"/>
    </providers>
</sessionState>

Exempel 2Example 2

<appSettings>
    <add key="MyRedisConnectionString" value="mycache.redis.cache.windows.net:6380,password=actual access key,ssl=True,abortConnect=False" />
</appSettings>

I web.config använder du ovanstående nyckel som parameter värde i stället för det faktiska värdet.In web.config, use above key as parameter value instead of actual value.

<sessionState mode="Custom" customProvider="MySessionStateStore">
    <providers>
        <add type = "Microsoft.Web.Redis.RedisSessionStateProvide"
             name = "MySessionStateStore"
             connectionString = "MyRedisConnectionString"/>
    </providers>
</sessionState>

Exempel 3Example 3

<sessionState mode="Custom" customProvider="MySessionStateStore">
    <providers>
        <add type = "Microsoft.Web.Redis.RedisSessionStateProvide"
             name = "MySessionStateStore"
             connectionString = "mycache.redis.cache.windows.net:6380,password=actual access key,ssl=True,abortConnect=False"/>
    </providers>
</sessionState>

Anteckningar på throwOnErrorNotes on throwOnError

För närvarande, om ett fel inträffar under en session, kommer providern för sessionstillstånd att utlösa ett undantag.Currently, if an error occurs during a session operation, the session state provider will throw an exception. Detta avslutar programmet.This shuts down the application.

Det här beteendet har ändrats på ett sätt som har stöd för förväntningarna hos befintliga ASP.NET för sessionstillstånd, samtidigt som det ger möjlighet att agera på undantag, om så önskas.This behavior has been modified in a way that supports the expectations of existing ASP.NET session state provider users while also providing the ability to act on exceptions, if desired. Standard beteendet genererar fortfarande ett undantag när ett fel inträffar, konsekvent med andra ASP.NET-providers för sessionstillstånd; befintlig kod ska fungera på samma sätt som tidigare.The default behavior still throws an exception when an error occurs, consistent with other ASP.NET session state providers; existing code should work the same as before.

Om du anger throwOnError till falskt kommer det att Miss förkastas i stället för att ett undantag utlöses när ett fel uppstår.If you set throwOnError to false , then instead of throwing an exception when an error occurs, it will fail silently. För att se om det uppstod ett fel och, i så fall, identifiera vad undantaget var, kontrollerar du den statiska egenskapen Microsoft. Web. Redis. RedisSessionStateProvider. LastException .To see if there was an error and, if so, discover what the exception was, check the static property Microsoft.Web.Redis.RedisSessionStateProvider.LastException .

Anteckningar på retryTimeoutInMillisecondsNotes on retryTimeoutInMilliseconds

Detta ger en del omprövnings logik för att förenkla det fall där vissa åtgärder i sessionen ska försöka utföras på grund av sådant som nätverks fel, samtidigt som du kan kontrol lera timeout-värdet för återförsök eller välja att helt få ett nytt försök.This provides some retry logic to simplify the case where some session operation should retry on failure because of things like network glitch, while also allowing you to control the retry timeout or opt out of retry entirely.

Om du anger retryTimeoutInMilliseconds till ett nummer, till exempel 2000, och sedan en session Miss lyckas, försöker den igen om 2000 millisekunder innan den behandlar det som ett fel.If you set retryTimeoutInMilliseconds to a number, for example 2000, then when a session operation fails, it will retry for 2000 milliseconds before treating it as an error. Så om du vill att sessionens tillstånds leverantör ska tillämpa den här omprövnings logiken konfigurerar du bara tids gränsen.So to have the session state provider to apply this retry logic, just configure the timeout. Det första omförsöket sker efter 20 millisekunder, vilket är tillräckligt i de flesta fall när ett nätverks fel inträffar.The first retry will happen after 20 milliseconds, which is sufficient in most cases when a network glitch happens. Därefter görs ett nytt försök varje sekund tills tids gränsen uppnås. Direkt efter timeout-värdet försöker den igen en gång för att se till att den inte kapas av tids gränsen (högst) en sekund.After that, it will retry every second until it times out. Right after the time out, it will retry one more time to make sure that it won’t cut off the timeout by (at most) one second.

Om du inte tror att du behöver försöka igen (till exempel när du kör Redis-servern på samma dator som ditt program), eller om du vill hantera omprövnings logiken själv, anger du retryTimeoutInMilliseconds till 0.If you don’t think you need retry (for example, when you are running the Redis server on the same machine as your application) or if you want to handle the retry logic yourself, set retryTimeoutInMilliseconds to 0.

Om redisSerializerTypeAbout redisSerializerType

Som standard görs serialiseringen för att lagra värdena i Redis i ett binärformat som tillhandahålls av BinaryFormatter -klassen.By default, the serialization to store the values on Redis is done in a binary format provided by the BinaryFormatter class. Använd redisSerializerType för att ange sammansättningens kvalificerade typnamn för en klass som implementerar Microsoft. Web. Redis. ISerializer och har den anpassade logiken för att serialisera och deserialisera värdena.Use redisSerializerType to specify the assembly qualified type name of a class that implements Microsoft.Web.Redis.ISerializer and has the custom logic to serialize and deserialize the values. Här är till exempel en JSON-serialiserare med hjälp av JSON.NET:For example, here is a Json serializer class using JSON.NET:

namespace MyCompany.Redis
{
    public class JsonSerializer : ISerializer
    {
        private static JsonSerializerSettings _settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };

        public byte[] Serialize(object data)
        {
            return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data, _settings));
        }

        public object Deserialize(byte[] data)
        {
            if (data == null)
            {
                return null;
            }
            return JsonConvert.DeserializeObject(Encoding.UTF8.GetString(data), _settings);
        }
    }
}

Om den här klassen är definierad i en sammansättning med namnet MyCompanyDll kan du ange parametern redisSerializerType för att använda den:Assuming this class is defined in an assembly with name MyCompanyDll , you can set the parameter redisSerializerType to use it:

<sessionState mode="Custom" customProvider="MySessionStateStore">
    <providers>
        <add type = "Microsoft.Web.Redis.RedisSessionStateProvider"
             name = "MySessionStateStore"
             redisSerializerType = "MyCompany.Redis.JsonSerializer,MyCompanyDll"
             ... />
    </providers>
</sessionState>

Utgående cache-direktivOutput cache directive

Lägg till ett OutputCache-direktiv på varje sida som du vill cachelagra utdata för.Add an OutputCache directive to each page for which you wish to cache the output.

<%@ OutputCache Duration="60" VaryByParam="*" %>

I föregående exempel finns cachelagrade sid data kvar i cachen i 60 sekunder och en annan version av sidan cachelagras för varje parameter kombination.In the previous example, the cached page data remains in the cache for 60 seconds, and a different version of the page is cached for each parameter combination. Mer information om OutputCache-direktivet finns i @OutputCache .For more information about the OutputCache directive, see @OutputCache.

När dessa steg har utförts är ditt program konfigurerat för att använda Redis-providern för utdata.Once these steps are performed, your application is configured to use the Redis Output Cache Provider.

Leverantörer av utdata från tredje partThird-party output cache providers

Nästa stegNext steps

Kolla in providern för ASP.net för Azure cache för Redis.Check out the ASP.NET Session State Provider for Azure Cache for Redis.