C# 虽然定义了文件属性,但正在将键值对添加到web.config文件中

C# 虽然定义了文件属性,但正在将键值对添加到web.config文件中,c#,asp.net,configuration,web-config,C#,Asp.net,Configuration,Web Config,结果是: Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); config.SectionGroups.Add("testing", new ConfigurationSectionGroup()); ConfigurationSectionGroup testing = config.SectionGroups["test

结果是:

 Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
  config.SectionGroups.Add("testing", new ConfigurationSectionGroup());         
  ConfigurationSectionGroup testing = config.SectionGroups["testing"];
  testing.Sections.Add("subsec", new AppSettingsSection() {File="tst.config" });
  KeyValueConfigurationCollection settings = ((AppSettingsSection)testing.Sections["subsec"]).Settings;

  settings.Add("tst", "ok");
config.Save();

//不应在此处,但必须将其添加到tst.config文件中

为什么不将设置添加到文件?

您应该能够通过编程方式(而不是
文件
)设置配置源,如下所示:


不是100%确定我理解这一点,结果中缺少了什么?@fionatyolorgorringe
应该添加到tst.config文件中,但正如您在结果中看到的那样,如果我定义
configSource
而不是
文件,它将添加并从配置源读取(一切正常)问题是,由于节是以编程方式创建的,因此我没有定义configSource的选项。(或者是吗?)我明白了,我添加了另一个选项(未经测试)。我刚刚修改了您的代码,使之与问题中的示例完全匹配
    <sectionGroup name="testing" type="System.Configuration.ConfigurationSectionGroup, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" >
      <section name="subsec" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </sectionGroup>

  <testing>
    <subsec file="tst.config">
      <add key="tst" value="ok" /> //this should not be here but must be added to the tst.config file
    </subsec>
  </testing>
ConfigurationSection subsec = config.GetSection("testing/subsec");
subsec.SectionInformation.ConfigSource = "tst.config";