Поставщик кэша вывода ASP.NET для Redis не хранит - PullRequest
0 голосов
/ 13 марта 2019

Я не уверен, как его устранить, но я пытаюсь реализовать ASP.NET Output Cache с помощью провайдера Redis Output cache.

У нас настроен сервер Redis (не-Azure), и я могу хранить кеш для общего использования. Однако, когда я пытаюсь настроить кеш вывода ASP.NET, кажется, что он ничего не сохраняет в кеш!

Я установил Microsoft.Web.RedisOutputCacheProvider через Nuget. Web.Config настроен следующим образом:

<caching>
      <outputCache defaultProvider="MyRedisOutputCache">
        <providers>
          <add name="MyRedisOutputCache" type="Microsoft.Web.Redis.RedisOutputCacheProvider" host="ServerName" port="6464" accessKey="PasswordToRedis" />
        </providers>
      </outputCache>
</caching>

Контроллер MVC настроен с атрибутом OutputCache:

[OutputCache(Duration = 3600, VaryByParam = "*", Location = OutputCacheLocation.ServerAndClient)]
        public JsonResult GetLookupData()

Когда я проверяю Redis, я не вижу сохраненного OutputCache.

Я что-то упустил? Есть ли способ отладки, почему он ничего не хранит в кеше?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

У меня есть работа на локальном хосте без настройки SSL.В производственном процессе мне это требуется, но по моему это часть строки подключения (которую мне предоставил мой хостинг-сервис Redis).

Причина, по которой он не работал, и вам пришлось понизить RedisOutputCacheProvider до 1.7.5,потому что вы используете Exchange.Redis.Strongname.dll (версия 1.2.6)

В соответствии с этой проблемой, Redis больше не требует строгого имени, потому что базовая версия теперь имеет строгое имя.https://github.com/Azure/aspnet-redis-providers/issues/107

Таким образом, чтобы использовать RedisOutputCacheProvider v3.0.144, вам необходимо удалить Exchange.Redis.Strongname.dll (версия 1.2.6) и установить Exchange.Redis.dll (версия 2.0.601) через Nuget * 1008.*

0 голосов
/ 14 марта 2019

Хорошо, это было действительно глупо.

Когда вы устанавливаете RedisOutputCacheProvider через Nuget, вы получите этот небольшой документ в вашем app / web.config:

<!-- For more details check https://github.com/Azure/aspnet-redis-providers/wiki --><!-- Either use 'connectionString' OR 'settingsClassName' and 'settingsMethodName' OR use 'host','port','accessKey','ssl','connectionTimeoutInMilliseconds' and 'operationTimeoutInMilliseconds'. --><!-- 'databaseId' and 'applicationName' can be used with both options. --><!--
          <add name="MyRedisOutputCache" 
            host = "127.0.0.1" [String]
            port = "" [number]
            accessKey = "" [String]
            ssl = "false" [true|false]
            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]
          />

Указывает, что значение по умолчанию для "ssl" будет ложным. Однако, читая сам код, по умолчанию он равен true .

Так что явно установив ssl в false исправили это.

EDIT

Да, и мне пришлось понизить RedisOutputCacheProvider до 1.7.5.

3.0.1 у меня вообще не сработало.

...