App.settings自定义配置问题

本文关键字:问题 配置 自定义 settings App | 更新日期: 2023-09-27 18:07:33

我第一次尝试在app.settings中使用自定义配置。当我尝试调用配置时,我得到"无法识别的配置部分服务器"。我做错了什么?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <sectionGroup name="servers" type="System.Configuration.NameValueSectionHandler"></sectionGroup>
      <sectionGroup name="services" type="System.Configuration.NameValueSectionHandler"></sectionGroup>
      <!--<section name="servers.myServers" type="System.Configuration.NameValueFileSectionHandler" />-->
      <!--<section name="services.myServices" type="System.Configuration.NameValueFileSectionHandler" />-->
      <section name="ServiceMonitor.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <servers>
    <myServers>
      <add key="server1" value="myserverhost"/>
    </myServers>
  </servers>
  <services>
    <myServices>
      <add key="service1" value="spooler"/>
      <add key="service2" value="Apple Mobile Device"/>
    </myServices>
  </services>
  <userSettings>
    <ServiceMonitor.Properties.Settings>
      <setting name="service1" serializeAs="String">
        <value>spooler</value>
      </setting>
      <setting name="service2" serializeAs="String">
        <value>Apple Mobile Device</value>
      </setting>
    </ServiceMonitor.Properties.Settings>
  </userSettings>
  <appSettings>
    <add key="service1" value="spooler"/>
    <add key="service2" value="Apple Mobile Device"/>
  </appSettings>
</configuration>

这是我用来调用配置的c#代码。

NameValueCollection settings = ConfigurationManager.GetSection("servers/myServers") as NameValueCollection;
if (settings != null)
{
    foreach (string key in settings)
    {
        Console.WriteLine("{0} : {1}", key, settings[key]);
    }
}

App.settings自定义配置问题

我认为你需要添加section元素(在你的例子中被注释掉):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="services">
      <section name="myServices" 
        type="System.Configuration.NameValueSectionHandler" />            
    </sectionGroup>
  </configSections>
</configuration>