Измените appSettings в пользовательском конфигурационном файле, на который ссылается атрибут file

В appSettings раздел Web.config file Атрибут используется со ссылкой на пользовательский файл конфигурации. Цель состоит в том, чтобы иметь возможность изменить некоторые параметры приложения в пользовательской конфигурации, не вызывая перезапуск приложения.

Web.config

<appSettings file="CustomAppSettings.config">
    <add key="key1" value="val2" />
</appSettings>

CustomAppSettings.config

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="customKey1" value="custVal2"/>
</appSettings>

Следующий код не работает. Это сохраняет значение в Web.config, но ожидается, что оно будет сохранено в CustomAppSettings.config, потому что оно не будет перезапускать приложение ( источник).

var configuration = WebConfigurationManager.OpenWebConfiguration("~/");
configuration.AppSettings.Settings[key].Value = value.ToString();
configuration.Save();

Это не работает так же хорошо.

var configuration = WebConfigurationManager.OpenWebConfiguration("~/CustomAppSettings.config");

Что я делаю неправильно? Может ли кто-нибудь указать мне правильное направление?

1 ответ

Решение

Используйте configSource вместо файла.

<appSettings configSource="CustomAppSettings.config" />

используйте ConfigurationSaveMode.Minimal при сохранении.

var configuration = WebConfigurationManager.OpenWebConfiguration("~/");
configuration.AppSettings.Settings[key].Value = value.ToString();
configuration.Save(ConfigurationSaveMode.Minimal);
Другие вопросы по тегам