System.Configuration:关于Configuration.Save方法的问题

时间:2010-10-18 14:45:13

标签: c# .net wcf web-config

configuration.Save(ConfigurationSaveMode.Modified, true)configuration.Save()之间的区别是什么?

后台:我有一个程序,我操作web.config,我用它来配置 WCF服务。我将其加载到Configuration对象中,更改一些属性并将其保存回来。当我使用configuration.Save(ConfigurationSaveMode.Modified, true)时,我得到Exception这样的内容:

“在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的......”

当我使用configuration.Save()时,它会起作用!异常的原因可能是我的web.config中的<serviceActivations>部分(本节的例外情况)

3 个答案:

答案 0 :(得分:1)

保存的默认参数是:

Save(ConfigurationSaveMode.Modified, false);

所以唯一的区别是你强制保存配置,即使它没有改变。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms134089.aspx

答案 1 :(得分:1)

为什么要在以下时间写configuration.Save(ConfigurationSaveMode.Modified, true}:

第一个选项不是第二个选项吗?

答案 2 :(得分:0)

ConfigurationSaveMode.Modified仅将与应用程序/系统配置不同的配置部分保存到用户本地或漫游配置(即ConfigurationUserLevel.PerUserRoaming使用ConfigurationUserLevel.PerUserRoamingAndLocal或{{1}} })。

由于ASP.NET没有用户级别(和用户隔离存储),因此没有意义。

从文档中不清楚任何ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel)重载是否真的适用于ASP.NET,它使用完全不同的配置设置继承模型到非ASP.NET .NET应用程序。实际上,使用其中一个Configuration.Save加载配置管理器可能是保存文件的必要前提条件。

另一种方法可能是使用WebConfigurationManager显式加载明确指定的文件。