Практическое руководство. Создание объекта 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 напрямую.
Программная настройка клиента кэша
Создайте объект DataCacheFactoryConfiguration .
DataCacheFactoryConfiguration config = new DataCacheFactoryConfiguration();
Задайте для объекта AutoDiscoveryProperty новый объект DataCacheAutoDiscoverProperty . Выберите
true
, чтобы включить автоматическое обнаружение. Также укажите имя роли, в которую размещается кэширование.config.AutoDiscoverProperty = new DataCacheAutoDiscoverProperty(true, "WebRole1");
Задайте любые другие свойства объекта DataCacheFactoryConfiguration , которые управляют поведением клиента кэша.
Создайте объект DataCacheFactory , передав объект DataCacheFactoryConfiguration в конструктор.
DataCacheFactory factory = new DataCacheFactory(config);
Вызовите метод 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");