Проблема сохранения класса конфигурации .NET - PullRequest
4 голосов
/ 20 сентября 2011

Когда я изменяю какое-либо свойство config и вызываю метод Save () для объекта конфигурации, а затем изменяю некоторое свойство config и снова вызываю Save (), я получаю исключение, потому что config был изменен.

Текст исключения: «Файл конфигурации был изменен другой программой.»

Так что, если пользователь во время выполнения что-то меняет и делает сохранить, а затем снова что-то меняет и сохраняет, мое приложение выдаст исключение. Я прав?

Разве я не могу сохранить конфигурацию несколько раз?

РЕДАКТИРОВАТЬ: Предоставленный пример кода.

ExeConfigurationFileMap map = new ExeConfigurationFileMap();
            map.LocalUserConfigFilename = UserConfig;
            map.RoamingUserConfigFilename = RoamingConfig;
            map.ExeConfigFilename = AppConfig;

            System.Configuration.Configuration combinedConfigFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoamingAndLocal);

            AddinConfiguration combinedConfig = (AddinConfiguration)combinedConfigFile.GetSection(sectionName);
            combinedConfig.Config = combinedConfigFile;
            return combinedConfig;

Я добавил свойство Config в свой раздел, чтобы использовать его для сохранения конфигурации, подобной этой.

mySection.Config.Save();

1 Ответ

6 голосов
/ 20 сентября 2011

В документации говорится: «Если файл конфигурации изменился с момента создания этого объекта конфигурации, возникает ошибка во время выполнения». Поэтому после Save() вам нужно уничтожить объект конфигурации и воссоздать его, чтобы несколько операций сохранения работали нормально.

...