2013-01-07 125 views
0

我想在我的web.config中使用嵌套列表。我看到的是工作的代码段,但不是我的,我有一个错误,当我尝试读取配置部分:Web.config嵌套列表

System.Configuration.ConfigurationErrorsException:元非 reconnu IsochroneServicesTestImbrique”。

我的配置:

<IsochroneServicesTest> 
    <add name="TC"> 
     <IsochroneServicesTestImbrique> 
     <add name="DEFAULT" path="success"/> 
     </IsochroneServicesTestImbrique> 
    </add> 
    </IsochroneServicesTest> 

,代码:

[ConfigurationProperty("IsochroneServicesTest")] 
    [ConfigurationCollection(typeof(CollectionIsochrone), AddItemName = "add")] 
    public CollectionIsochroneType IsochroneServicesTest 
    { 
     get { return (CollectionIsochroneType)this["IsochroneServicesTest"]; } 
     set { this["IsochroneServicesTest"] = value; } 
    } 

    public class CollectionIsochroneType : ConfigurationElementCollection 
    { 
     public void Add(ProviderElement element) 
     { 
      base.BaseAdd(element); 
     } 

     protected override ConfigurationElement CreateNewElement() 
     { 
      return new IsochroneElement(); 
     } 

     protected override object GetElementKey(ConfigurationElement element) 
     { 
      return ((IsochroneTypeElement)element).Name; 
     } 

     public IsochroneTypeElement this[int index] 
     { 
      get { return (IsochroneTypeElement)BaseGet(index); } 
      set 
      { 
       if (BaseGet(index) != null) 
       { 
        BaseRemoveAt(index); 
       } 
       BaseAdd(index, value); 
      } 
     } 

     public new IsochroneTypeElement this[string Name] 
     { 
      get { return (IsochroneTypeElement)BaseGet(Name); } 
     } 

     public int IndexOf(IsochroneTypeElement element) 
     { 
      return BaseIndexOf(element); 
     } 

     protected override void BaseAdd(ConfigurationElement element) 
     { 
      BaseAdd(element, false); 
     } 
    } 

    public class IsochroneTypeElement : ConfigurationElement 
    { 
     [ConfigurationProperty("name", IsRequired = true)] 
     public string Name 
     { 
      get { return (string)this["name"]; } 
      set { this["name"] = value; } 
     } 

     [ConfigurationProperty("IsochroneServicesTestImbrique", IsRequired = true)] 
     [ConfigurationCollection(typeof(CollectionIsochrone), AddItemName = "add")] 
     public CollectionIsochrone IsochroneServicesImbrique 
     { 
      get { return (CollectionIsochrone)this["IsochroneServicesTestImbrique"]; } 
      set { this["IsochroneServicesTestImbrique"] = value; } 
     } 
    } 

public class CollectionIsochrone : ConfigurationElementCollection 
{ 
    public void Add(ProviderElement element) 
    { 
     base.BaseAdd(element); 
    } 

    protected override ConfigurationElement CreateNewElement() 
    { 
     return new IsochroneElement(); 
    } 

    protected override object GetElementKey(ConfigurationElement element) 
    { 
     return ((IsochroneElement)element).Name; 
    } 

    public IsochroneElement this[int index] 
    { 
     get { return (IsochroneElement)BaseGet(index); } 
     set 
     { 
      if (BaseGet(index) != null) 
      { 
       BaseRemoveAt(index); 
      } 
      BaseAdd(index, value); 
     } 
    } 

    public new IsochroneElement this[string Name] 
    { 
     get { return (IsochroneElement)BaseGet(Name); } 
    } 

    public int IndexOf(IsochroneElement element) 
    { 
     return BaseIndexOf(element); 
    } 

    protected override void BaseAdd(ConfigurationElement element) 
    { 
     BaseAdd(element, false); 
    } 
} 

public class IsochroneElement : ConfigurationElement 
{ 
    [ConfigurationProperty("name", IsRequired = true)] 
    public string Name 
    { 
     get { return (string)this["name"]; } 
     set { this["name"] = value; } 
    } 

    [ConfigurationProperty("path", IsRequired = true)] 
    public string Path 
    { 
     get { return (string)this["path"]; } 
     set { this["path"] = value; } 
    } 
} 

感谢您的帮助

回答

0

,因为你是在缺少声明IsochroneServicesTestImbrique你得到的是错误的<configSections>部分。此外,至少有一个班级必须继承ConfigurationSection。见示例here

+0

谢谢,我做了必要的更正,我工作得很好。 – Angelure