Лазурный :можем ли мы проверить, существует ли параметр, прежде чем пытаться его прочитать?

StackOverflow https://stackoverflow.com/questions/6018138

Вопрос

В настоящее время я использую RoleEnvironment.GetConfigurationSettingValue(propertyName) чтобы получить значение параметра, определенного в моем конфигурационном файле WebRole (csdef + cscfg).О'кей, звучит правильно.

Это хорошо работает, если параметр существует, но произошел сбой, за исключением случаев, когда параметр не определен в csdef и cscfg.

Я переношу существующее приложение в Azure, которое имеет множество параметров конфигурации в web.config.В моем коде, чтобы прочитать значение настройки, я хотел бы протестировать :если он существует в конфигурации WebRole (csdef + cscfg) Я прочитал его отсюда, в противном случае я прочитал его с помощью ConfigurationManager из web.config.Это предотвратило бы перенос всех настроек из my web.config и позволило бы настроить их, когда приложение уже развернуто.

Есть ли способ сделать это ?

Я не хочу инкапсулировать GetConfigurationSettingValue в try / catch (и прочитайте из web.config, если я введу catch), потому что это действительно уродливый способ (и в основном это неэффективно с точки зрения производительности!).

Спасибо!

Это было полезно?

Решение

Обновление для 1.7 Azure SDK.Был представлен класс CloudConfigurationManager.Это позволяет одному вызову GetSetting сначала заглянуть в ваш cscfg, а затем вернуться к web.config, если ключ не найден.

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

Версия SDK для версии 1.7 Простой ответ - нет.(Насколько я знаю)

Более интересной темой является рассмотрение конфигурации как зависимости.Я обнаружил, что было бы полезно рассматривать параметры конфигурации как зависимость, чтобы резервная реализация могла быть изменена с течением времени.Эта реализация может быть подделкой для тестирования или чем-то более сложным, например переключением с .конфигурация/.cscfg к реализации базы данных для многопользовательских решений.

Учитывая эту оболочку конфигурации, вы можете написать, что TryGetSetting как внутренний метод для любого вашего источника параметров конфигурации.Когда эта функция будет добавлена к участникам RoleEnvironment, вам нужно будет только изменить эту внутреннюю реализацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top