Como criar um objeto DataCache em métodos RoleEntryPoint para o Azure Serviço de Cache Gerenciado

Importante

A Microsoft recomenda que todos os novos desenvolvimentos usem o Cache Redis do Azure. Para obter documentação e diretrizes atuais sobre como escolher uma oferta de Cache do Azure, confira qual oferta do Cache do Azure é ideal para mim?

Serviço de Cache Gerenciado configurações no arquivo web.config não estão disponíveis automaticamente no contexto da classe RoleEntryPoint (normalmente definida no arquivo WebRole.cs). Quando você tenta criar um objeto DataCache nos métodos de classe RoleEntryPoint , ocorre o seguinte erro:

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

Isso acontece porque as configurações de dataCacheClient no arquivo web.config não estão sendo aplicadas automaticamente ao novo objeto cliente DataCache . Especificamente, os atributos do elemento autoDiscover não estão disponíveis , portanto, o objeto DataCache não consegue direcionar a função que hospeda o cache.

Nesse cenário, você deve configurar programaticamente um objeto DataCacheFactoryConfiguration , que acessa as configurações no arquivo web.config diretamente.

Como configurar programaticamente um cliente de cache

  1. Crie um objeto DataCacheFactoryConfiguration .

    DataCacheFactoryConfiguration config = new DataCacheFactoryConfiguration();
    
  2. Defina o AutoDiscoveryProperty como um novo objeto DataCacheAutoDiscoverProperty . Essa propriedade é usada para conexão ao cache. Especifique true para habilitar a descoberta automática. Especifique também o ponto de extremidade do cache.

    config.AutoDiscoverProperty = new DataCacheAutoDiscoverProperty(true, "mycache.cache.windows.net");
    
  3. Defina a config.SecurityPropertiepropriedade s para uma nova instância do DataCacheSecurity e especifique a chave de acesso para o cache e se você deseja que o SSL seja habilitado para comunicação entre o cache e os clientes.

    config.SecurityProperties = new DataCacheSecurity("[Replace with Access Key]", false);
    

    Observação

    Para obter mais informações, confira Como proteger as comunicações entre os clientes de cache e o Cache.

  4. Defina qualquer outra propriedade no objeto DataCacheFactoryConfiguration que controle o comportamento do cliente de cache.

  5. Crie um objeto DataCacheFactory , passando o objeto DataCacheFactoryConfiguration no construtor.

    DataCacheFactory factory = new DataCacheFactory(config);
    
  6. Chame o método DataCacheFactory.GetCache para retornar o objeto DataCache para o cache nomeado de destino.

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

Exemplo

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

// Enable the AutoDiscoveryProperty (and any other required configuration settings):
config.AutoDiscoverProperty = 
    new DataCacheAutoDiscoverProperty(true, "mycache.cache.windows.net");

// Configure the access key and sslEnabled setting.
config.SecurityProperties = new DataCacheSecurity("[Replace with Access Key]", false);

// 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");