Да. Если вашему приложению разрешено изменять файлы в папке приложения - обновите файл *.config
, с помощью операций ввода-вывода файла или с помощью раздела "1004 * / save
/ refresh
"В этом решении есть прямая логика - хотите иметь удаленную настройку?Получить его из удаленного, обновить локальный и иметь его.
Пример: допустим, вы сохранили группу вашего wcf группы (<bindings>
, <behaviors>
.. и т.д.) в файле wcfsections.test.config
(конечно, любойудаленный источник возможен) и хочется "перегрузить" конфигурацию файла conf.Тогда код обновления / сохранения / обновления конфигурации выглядит следующим образом:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionCollection sections = ServiceModelSectionGroup.GetSectionGroup(config).Sections;
sections.Clear();
string fileName = ((GeneralSettings)ConfigurationManager.GetSection("generalSettings")).AppConfigServiceModelSectionFile;
XDocument doc = XDocument.Load(fileName);
var xmlGroup = (from x in doc.Descendants("system.serviceModel") select x).FirstOrDefault();
string[] sectionsInUpdateOrder = { "bindings", "comContracts", "behaviors", "extensions", "services", "serviceHostingEnvironment", "client", "diagnostics" };
foreach (string key in sectionsInUpdateOrder)
{
var e = (from x in xmlGroup.Elements(key) select x).FirstOrDefault();
if (e != null)
{
ConfigurationSection currentSection = sections[e.Name.LocalName];
string xml = e.ToString();
currentSection.SectionInformation.SetRawXml(xml);
}
}
config.Save();
foreach (string key in sectionsInUpdateOrder)
ConfigurationManager.RefreshSection("system.serviceModel/" + key);
Примечание. Порядок обновлений важен для подсистемы проверки wcf.Если вы обновите его в неправильном порядке, вы можете получить исключения из проверки.