Как записать информацию о конечной точке в app.config во время выполнения WCF? - PullRequest
1 голос
/ 10 июля 2009

Есть ли способ записать в файл app.config информацию о конечных точках? На самом деле я хочу прочитать тег <service> из одного файла app.config и записать его в тег <Services> другого файла app.config.

Пожалуйста, кто-нибудь, скажите мне, как я могу это сделать?

На самом деле у меня есть файл конфигурации под названием "WCFService.exe.config", который я хочу прочитать в своей программе, поэтому я пишу:

string path = Path.Combine(Application.StartupPath, "WCFService.exe.config");
Configuration config = ConfigurationManager.OpenExeConfiguration(path)  

ServicesSection serviceSection = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;

ServiceElementCollection sereleColl = serviceSection.Services;

но я ничего не получаю в sereleColl.

Ответы [ 2 ]

3 голосов
/ 10 июля 2009

Ваш вызов "OpenExeConfiguration" - это откроет конфигурацию для текущего выполняющегося приложения.

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

Есть серия действительно хороших статей о том, как демистифицировать систему конфигурации .NET 2.0 в CodeProject:

  1. Раскрытие загадок конфигурации .NET 2.0

  2. Расшифровка загадок конфигурации .NET 2.0

  3. Раскрывая тайны конфигурации .NET 2.0

Настоятельно рекомендуется! Джон Риста проделал большую работу, объясняя систему конфигурации в .NET 2.0.

2 голосов
/ 10 июля 2009

Посмотрите на класс ConfigurationManager

Я не помню, как это сделать.

Edit:

Чтобы получить к нему доступ, необходимо добавить ссылку на System.Configuration.

Редактировать 2:

Изменить настройки приложения можно следующим образом:

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
AppSettingsSection appSettings = config.AppSettings;
KeyValueConfigurationElement setting = appSettings.Settings["MyAppSettingsKey"];
setting.Value = "newValue";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

Вы можете получить доступ к настройкам WCF, набрав:

ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];

Надеюсь, это поможет.

Комментарий:

Здесь ваш код работает нормально. Однако я изменил

string path = Path.Combine(Application.StartupPath, "WCFService.exe.config");

до

string path = Application.ExecutablePath;

При этом будет использоваться файл конфигурации приложения, запущенного в данный момент. Я не знаю, почему твой путь не работает. Либо это так, либо в вашем конфигурационном файле должна быть ошибка?

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