System.Configuration: вопрос по методу Configuration.Save - PullRequest
0 голосов
/ 18 октября 2010

В чем разница между configuration.Save(ConfigurationSaveMode.Modified, true) и configuration.Save()?

Справочная информация: У меня есть программа, в которой я манипулирую web.config, которую использую для настройки WCF Services . Я загружаю его в Configuration объект, меняю некоторые атрибуты и сохраняю его обратно. Когда я использую configuration.Save(ConfigurationSaveMode.Modified, true), я получаю Exception вот так:

"Ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication' за пределами уровня приложения ..."

Когда я использую configuration.Save(), тогда это работает! Причиной исключения может быть раздел <serviceActivations> в моем web.config (исключение указывает на этот раздел)

Ответы [ 3 ]

1 голос
/ 18 октября 2010

Почему вы пишете configuration.Save(ConfigurationSaveMode.Modified, true), когда:

Разве первый вариант не противоположен второму?

1 голос
/ 18 октября 2010

Параметры сохранения по умолчанию:

Save(ConfigurationSaveMode.Modified, false);

Таким образом, единственная разница будет в том, что вы принудительно сохраните конфигурацию, даже если она не изменилась.См. http://msdn.microsoft.com/en-us/library/ms134089.aspx для получения дополнительной информации.

0 голосов
/ 18 октября 2010

ConfigurationSaveMode.Modified сохраняет только те части конфигурации, которые отличаются от конфигурации приложения / системы, в локальную или роуминговую конфигурацию пользователя (т. Е. С использованием ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel) с ConfigurationUserLevel.PerUserRoaming или ConfigurationUserLevel.PerUserRoamingAndLocal).

Поскольку ASP.NET не имеет пользовательских уровней (и изолированного хранилища), это не имеет смысла.

Из документации неясно, есть ли у Configuration.Save перегрузки действительно будут работать в случае ASP.NET, который использует совершенно другую модель наследования параметров конфигурации для приложений, отличных от ASP.NET .NET.На практике использование одного из WebConfigurationManager для загрузки менеджера конфигурации, вероятно, будет необходимым предварительным условием для сохранения файла.

Другой подход может заключаться в явной загрузке явно назначенногофайл с ConfigurationManager.OpenMappedExeConfiguration .

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