Поделиться через


Практическое руководство. Создание объекта DataCache в методах RoleEntryPoint в кэше In-Role Azure

Важно!

Корпорация Майкрософт рекомендует всем новым разработкам использовать кэш Redis для Azure. Текущую документацию и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

Microsoft Azure параметры кэша в файле web.config автоматически недоступны в контексте класса RoleEntryPoint (обычно определяется в файле WebRole.cs). При попытке создать объект DataCache в методах класса RoleEntryPoint возникает следующая ошибка:

{"ErrorCode<ERRCA0021>:SubStatus<ES0001>:Server collection cannot be empty."}

Это происходит потому, что параметры dataCacheClient в файле web.config не применяются автоматически к новому клиентскому объекту DataCache . В частности, атрибуты элемента автообнаружения недоступны, поэтому объект DataCache не может ориентироваться на роль, в которую размещается кэширование.

В этом сценарии необходимо программно настроить объект DataCacheFactoryConfiguration , который обращается к параметрам в файле web.config напрямую.

Программная настройка клиента кэша

  1. Создайте объект DataCacheFactoryConfiguration .

    DataCacheFactoryConfiguration config = new DataCacheFactoryConfiguration();
    
  2. Задайте для объекта AutoDiscoveryProperty новый объект DataCacheAutoDiscoverProperty . Выберите true, чтобы включить автоматическое обнаружение. Также укажите имя роли, в которую размещается кэширование.

    config.AutoDiscoverProperty = new DataCacheAutoDiscoverProperty(true, "WebRole1");
    
  3. Задайте любые другие свойства объекта DataCacheFactoryConfiguration , которые управляют поведением клиента кэша.

  4. Создайте объект DataCacheFactory , передав объект DataCacheFactoryConfiguration в конструктор.

    DataCacheFactory factory = new DataCacheFactory(config);
    
  5. Вызовите метод DataCacheFactory.GetCache , чтобы вернуть объект DataCache для целевого именованного кэша.

    DataCache cache = factory.GetCache("default");
    

Пример

// Create a DataCacheFactoryConfiguration object
DataCacheFactoryConfiguration config = new DataCacheFactoryConfiguration();

// Enable the AutoDiscorveryProperty (and any other required configuration settings):
config.AutoDiscoverProperty = new DataCacheAutoDiscoverProperty(true, "WebRole1");

// Create a DataCacheFactory object with the configuration settings:
DataCacheFactory factory = new DataCacheFactory(config);

// Use the factory to create a DataCache client for the "default" cache:
DataCache cache = factory.GetCache("default");

См. также:

Основные понятия

Начало разработки кэша роли Azure