从安装程序中访问配置文件的“applicationSettings”部分(而不是“appSettings”)

3

我正在创建一个我们构建的Web应用程序的设置过程中。现在我有一个配置文件,看起来像这样,其中包含一个名为'appSettings'的部分和一个名为'applicationSettings'的部分:

<configuration>
<appSettings>
    <add key="Password" value="dummy"/>
    <add key="Username" value="dummy"/>
    <add key="DB" value="dummy"/>
    <add key="DBServer" value="dummy"/>
    <add key="LogStoredProcedure" value="dummy"/>
    <add key="ErrorStoredProcedure" value="dummy"/>
    <add key="ErrorFileName" value="dummy"/>
    <add key="EncryptionKey" value="dummy"/>
</appSettings>
<applicationSettings>
    <inoBIBooks.My.MySettings>
      <setting name="BIDB_Username" serializeAs="String">
        <value>Username</value>
      </setting>
      <setting name="BIDB_Server" serializeAs="String">
        <value>Servername</value>
      </setting>
      <setting name="BIDB_Database" serializeAs="String">
        <value>Database</value>
      </setting>
      <setting name="BIDB_Password" serializeAs="String">
        <value>Password</value>
      </setting>
    </inoBIBooks.My.MySettings>
</applicationSettings>
</configuration>

现在,从我的设置中,我必须打开文件系统中的配置文件,使用以下代码: Configuration config = WebConfigurationManager.OpenWebConfiguration("/" + targetvdir); 其中变量“targetvdir”包含配置文件的路径。
我通过这种方式获取配置文件,并能够通过以下方式编辑“appSettings”部分:
config.AppSettings.Settings["Password"].Value = "something";

但是我无论如何都不能使用'applicationSettings'部分进行操作。在Web应用程序中,我通过以下方式访问该部分:

Properties.Settings.Default.<Setting>

但是这在我的安装项目中行不通。

是否有可能像“appSettings”部分一样轻松地编辑“applicationSettings”部分?还是我必须直接编辑XML文件?任何提示都将不胜感激。

此致, Kai Hartmann

1个回答

3
我很抱歉自己回答自己的问题,因为我在发布后就找到了解决方案。这个问题基本上提供了答案:Save and reload app.config(applicationSettings) at runtime 我必须使用以下代码来写入该部分“applicationSettings”:
// this gets the applicationSettings section (and the inner section 'inoBIBooks.My.MySettings')
Configuration config = WebConfigurationManager.OpenWebConfiguration("/" + targetvdir);
ConfigurationSectionGroup applicationSectionGroup = config.GetSectionGroup("applicationSettings");
ConfigurationSection applicationConfigSection = applicationSectionGroup.Sections["inoBIBooks.My.MySettings"];
ClientSettingsSection clientSection = (ClientSettingsSection)applicationConfigSection;

// set a value to that specific property
SettingElement applicationSetting = clientSection.Settings.Get("BIDB_Username");
applicationSetting.Value.ValueXml.InnerText = "username";

// without this, saving won't work
applicationConfigSection.SectionInformation.ForceSave = true;
// save
config.Save();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接