Как включить пользовательские настройки для библиотек, используемых службой WCF веб-проекта? - PullRequest
2 голосов
/ 17 декабря 2009

По умолчанию служба WCF, размещенная на IIS, не может использовать библиотеки, использующие параметры области пользователя. Единственная область, которую он принимает, - это область приложения.

При попытке сделать иначе выдается исключение:

[System.Configuration.ConfigurationErrorsException] {"Текущая система конфигурации не поддерживает параметры в пользовательской области."}

Как это обойти?

1 Ответ

3 голосов
/ 17 декабря 2009

Вы можете использовать систему конфигурации .NET 2.0 для загрузки / управления файлом конфигурации, определяемым пользователем, для вашей службы, например, находится в IsolatedStorage или что-то в этом роде.

Получив этот файл, вы можете загрузить и получить доступ к его содержимому с помощью кода, подобного следующему:

ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "ConfigLibrary.config";  // set it to whatever 

Configuration libConfig = ConfigurationManager.
                  OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

AppSettingsSection section = 
                   (libConfig.GetSection("appSettings") as AppSettingsSection);

string value = section.Settings["Test"].Value;
string item = section.Settings["Item"].Value;

и так далее. При этом используются стандартные настройки конфигурации .NET 2.0 по умолчанию, но это позволяет вам иметь собственные настраиваемые конфигурационные файлы с именами, которые вам нравятся, в любом месте, к которым вы можете обращаться, и к ним можно обращаться непосредственно из вашей библиотеки классов, не нужно их помещать. в web.config или app.config вашего хост-приложения.

Для получения дополнительной информации о системе конфигурации .NET 2.0, ознакомьтесь с серией из трех частей, посвященной настройке .NET 2.0 в CodeProject, Джоном Ристой.

Настоятельно рекомендуется, хорошо написано и чрезвычайно полезно!

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...