【问题标题】:System.Configuration: Question on the Configuration.Save methodSystem.Configuration:关于 Configuration.Save 方法的问题
【发布时间】:2010-10-18 14:45:12
【问题描述】:

configuration.Save(ConfigurationSaveMode.Modified, true)configuration.Save() 有什么区别?

背景:我有一个程序,我在其中操作 web.config,我用它来配置 WCF 服务。我将它加载到Configuration 对象中,更改一些属性并将其保存回来。当我使用configuration.Save(ConfigurationSaveMode.Modified, true) 时,我会得到一个Exception,如下所示:

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

当我使用configuration.Save() 时,它就可以工作了!异常的原因可能是我的web.config中<serviceActivations>这一段(异常指向这一段)

【问题讨论】:

    标签: c# .net wcf web-config


    【解决方案1】:

    保存的默认参数是:

    Save(ConfigurationSaveMode.Modified, false);
    

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

    【讨论】:

      【解决方案2】:

      你为什么写configuration.Save(ConfigurationSaveMode.Modified, true) 什么时候:

      第一个选项不是和第二个相反吗?

      【讨论】:

        【解决方案3】:

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

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

        对于使用与非 ASP.NET .NET 应用程序完全不同的配置设置继承模型的 ASP.NET,从文档中不清楚任何 Configuration.Save 重载是否真的有效。在实践中,使用WebConfigurationManager 之一加载配置管理器可能是保存文件的必要前提条件。

        另一种方法可能是使用ConfigurationManager.OpenMappedExeConfiguration 显式加载显式指定的文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-05
          • 2020-08-01
          • 2011-11-08
          • 2011-02-16
          • 1970-01-01
          • 1970-01-01
          • 2011-03-30
          • 2011-07-25
          相关资源
          最近更新 更多