C#configSections“每个配置文件只能出现一次。”

时间:2011-10-06 11:13:25

标签: c# configsection

我想创建clientUsers的“列表”,其中包含许多clientUser

 <configuration>
        <configSections>
          <sectionGroup name="clientUsers">
            <section name="clientUser" type="System.Configuration.NameValueFileSectionHandler" />
          </sectionGroup>
        </configSections>

        <clientUsers>
            <!-- user number 1  -->
            <clientUser>
              <add key="id"       value="1" />
              <add key="userName" value="someuser" />
              <add key="password" value="test" />
              <add key="IPs"      value="1,2,3" />
            </clientUser>

            <!-- user number 2  -->
            <clientUser>
              <add key="id"       value="2" />
              <add key="userName" value="avi2" />
              <add key="password" value="test" />
              <add key="IPs"      value="1,2,3" />
            </clientUser>
   </clientUsers>

为什么我会收到此错误:

  
    

每个配置文件只能出现一次。有关例外,请参阅帮助主题。

  

如何创建clientUser

列表

2 个答案:

答案 0 :(得分:1)

我认为已经提出了类似的问题。检查this question的答案。他使用自定义配置处理程序完成了它。

答案 1 :(得分:1)

我认为您正在寻找System.Configuration MSDN Link http://msdn.microsoft.com/en-us/library/system.configuration.configurationelementcollection.aspx

下的ConfigurationElementCollection类。

codeproject

上还有一个tutoial

codeproject网站的简短代码段

public class ShiSettingCollection : ConfigurationElementCollection
   {
      public ShiSettingElements this[int index]
      {
         get
         {
            return base.BaseGet(index) as ShiSettingElements;
         }
         set
         {
            if (base.BaseGet(index) != null)
            {
               base.BaseRemoveAt(index);
            }
            this.BaseAdd(index, value);
         }
      }
      protected override System.Configuration.ConfigurationElement CreateNewElement()
      {
         return new ShiSettingElements();
      }

      protected override object GetElementKey(ConfigurationElement element)
      {
         return ((ShiSettingElements)element).Key;
      }
   }