Pergunta

Eu uso atualmente RoleEnvironment.GetConfigurationSettingValue(propertyName) para obter o valor de uma configuração definida no meu WebRole arquivo de configuração (csdef + cscfg).Ok, sons de direito.

Isso funciona bem se a definição existe, mas falha com uma Exceção se a configuração não for definida no csdef e o cscfg.

Estou migrando uma aplicação já existente para Azure, que tem muitas definições de configuração na web.config.No meu código, para ler um valor de definição, I d'like para testar :se ele existe no webRole config (csdef + cscfg) eu lê-lo a partir daqui, caso contrário, eu o li com ConfigurationManager da web.config.Isso iria impedir a migrar todas as configurações do meu web.configuração e permitir personalizado, quando o aplicativo já está implantado.

Existe uma maneira de fazer isso ?

Eu não quero encapsular o GetConfigurationSettingValue em um try/catch (e ler a partir da web.config se eu entrar no catch), porque é realmente uma forma feia (e, principalmente, não é o desempenho eficaz !).

Obrigado !

Foi útil?

Solução

Atualização para 1.7 Azure SDK.O CloudConfigurationManager classe foi introduzida.O permite que uma única GetSetting chamada para olhar em seus cscfg primeiro e, em seguida, cair de volta para web.configuração se a chave não for encontrada.

http://msdn.microsoft.com/en-us/LIBRARY/jj157248

Pré 1.7 SDK Resposta simples é não.(Que eu conheça)

O mais interessante tópico é a de considerar a configuração como uma dependência.Eu encontrei-o para ser benéfico para tratar de configuração de definições como uma dependência, de modo que o apoio a implementação pode ser alterado ao longo do tempo.Que a implementação pode ser um fake para testar ou algo mais complexo como a mudança de .config/.cscfg para uma implementação de banco de dados multi-tennent soluções.

Dada esta configuração wrapper você pode escrever que TryGetSetting como método interno para qualquer que seja a sua origem de opções de configuração.Quando esse recurso é adicionado para o RoleEnvironment membros, você terá apenas que para que mudanças de implementação interna.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top