Как подключиться к Azure Redis Cache

Я пытаюсь подключиться к экземпляру кэша Redis Azure (предварительный просмотр) из веб-проекта Visual Studio.

Я получаю следующую ошибку: "Не удалось загрузить файл или сборку" Токен авторизации передан пользователем недействительным ".

Я сделал следующее: 1) вошел в портал Azure и создал новый Redis Cache PREVIEW 2) открыл Visual Studio и создал новый проект (Web MVC) 3) управлял пакетами Nuget - обновлял все 4) установочный пакет - "версия Windows Azure Cache" 2.2.0.0" 5) Откройте Web.Config, в разделе dataCacheClients следующее:

<dataCacheClients>
<dataCacheClient name="default">
  <autoDiscover isEnabled="true" identifier="mycache.redis.cache.windows.net"  />
    <securityProperties mode="Message" sslEnabled="false">
    <messageSecurity authorizationInfo="xxxxxxxmykeyxxxxxxxx"/>
  </securityProperties>
</dataCacheClient>
</dataCacheClients>

6) Изменен HomeController.cs на следующее:

using Microsoft.ApplicationServer.Caching;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CacheRedisTest.Controllers
{
public class HomeController : Controller
{
    static DataCacheFactory myFactory;
    static DataCache myCache;
    public ActionResult Index()
    {
        if (myCache == null)
        {
            myFactory = new DataCacheFactory();
            myCache = myFactory.GetDefaultCache();
        }

        return View();
    }
}
}

Нужны ли какие-то другие пакеты nuget, относящиеся к Redis? Кроме того, где я могу указать номер порта, который указан в консоли Azure?

Спасибо за прочтение

3 ответа

Решение

Для Azure Redis Cache вам необходимо использовать клиентскую библиотеку Redis, например StackExchange.Redis. Клиентская библиотека "Windows Azure Cache" относится к управляемому кэшу Azure.

После добавления пакета Nucket StackExchange.Redis в проект подключитесь к Redis с помощью объекта ConnectionMultiplexer:

var cm  = ConnectionMultiplexer.Connect("mycache.redis.cache.windows.net,ssl=true,password=<password>");
var db = connection.GetDatabase();

db.StringSet("key", "value");
var key = db.StringGet("key");

Ссылки с дополнительной информацией:

http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/ https://github.com/StackExchange/StackExchange.Redis

Вам не нужны dataCacheClients в вашем web.config - вы не захотите проверять секрет в своем источнике. Вы бы настроили это так в контроллере MVC

    public class MoviesController : Controller
   {
      private MovieDBContext db = newMovieDBContext();
      private static ConnectionMultiplexer connection;
      private static ConnectionMultiplexer Connection
      {
         get
         {
            if (connection == null || !connection.IsConnected)
            {
               connection = ConnectionMultiplexer.Connect(
               "<your Cache>.redis.cache.windows.net,ssl=true," +
               "password=<Your password>");
            }
            return connection;
         }
      }

Опять же, не помещайте свою учетную запись / пароль в исходный код - используйте ConfigurationManager.AppSettings["Account"], ConfigurationManager.AppSettings["Password"] - и сохраните значения на вкладке "Настройка" на портале Azure.

Для получения дополнительной информации см. http://azure.microsoft.com/blog/2014/06/05/mvc-movie-app-with-azure-redis-cache-in-15-minutes/

Вот статья "Как использовать Redis Cache" - http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/

Другие вопросы по тегам