自定义C#config无法识别的元素exception

我在App.config中有以下针对.NET 3.5 Windows服务的位:

 

我在configurationServiceSection.config中有这个:

      

这是代码:

 using System.Configuration; namespace SomeApp.Framework.Configuration { public sealed class ConfigurationServiceSection : ConfigurationSection { [ConfigurationProperty("ConfigurationServices", IsDefaultCollection = true, IsRequired = true)] [ConfigurationCollection(typeof(ConfigurationServices))] public ConfigurationServices ConfigurationServices { get { return (ConfigurationServices)base["ConfigurationServices"]; } } } public sealed class ConfigurationServices : ConfigurationElementCollection { protected override ConfigurationElement CreateNewElement() { return new ConfigurationService(); } protected override object GetElementKey(ConfigurationElement element) { ConfigurationService configService = (ConfigurationService) element; return configService.Name; } } public sealed class ConfigurationService : ConfigurationElement { ///  /// name ///  [ConfigurationProperty("name", IsKey = true, IsRequired = true)] public string Name { get { return (string)this["name"]; } set { this["name"] = value; } } ///  /// host ///  [ConfigurationProperty("host", IsKey = false, IsRequired = true)] public string Host { get { return (string)this["host"]; } set { this["host"] = value; } } ///  /// port ///  [ConfigurationProperty("port", IsKey = false, IsRequired = true)] public string Port { get { return (string)this["port"]; } set { this["port"] = value; } } ///  /// location ///  [ConfigurationProperty("location", IsKey = false, IsRequired = true)] public string Location { get { return (string)this["location"]; } set { this["location"] = value; } } } } 

当我尝试使用以下内容访问配置时:

 var configurationServiceSection = (ConfigurationServiceSection)configuration.GetSection("ConfigurationServiceSection"); 

我得到这个例外:

 Unrecognized element 'ConfigurationService'. (C:\Code\branches\ConfigurationService\SomeApp\Src\ConfigService\SomeApp.ConfigService.WindowsService\bin\Debug\ConfigSections\configurationServiceSection.config line 3) 

一切都看起来对我来说?

有什么想法吗? 谢谢。

好了到底:

我将’AddItemName’添加到ConfigurationServiceSection类,如下所示:

 public sealed class ConfigurationServiceSection : ConfigurationSection { [ConfigurationProperty("ConfigurationServices", IsDefaultCollection = true, IsRequired = true)] [ConfigurationCollection(typeof(ConfigurationServices), AddItemName = "ConfigurationService")] public ConfigurationServices ConfigurationServices { get { return (ConfigurationServices)base["ConfigurationServices"]; } } } 

另一种方法是覆盖CollectionType和ElementName属性,如下所示:

 public override ConfigurationElementCollectionType CollectionType { get { return ConfigurationElementCollectionType.BasicMap; } } protected override string ElementName { get { return "ConfigurationService"; } }