2010-12-14 2 views
5

Я создал пользовательский раздел конфигурации для своего приложения. По какой-то причине Visual Studio 2010 не собирает и не меняет свои пользовательские свойства. Я получаю предупреждение, аналогичное это для всех ключей "добавить":App.Config Проблема с конфигурационной конфигурацией

Could not find schema information for the element 'urlFilterSection' 

CONFIG FILE:

<configSections> 
    <section name="urlFilterSection" type="BotFinderApp.Models.UrlFilterSection, BotFinder" /> 
</configSections> 

<urlFilterSection> 
    <urlFilterCollection> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
     <add url="urlhere.com.au" numberOfIpsToExtract="10" /> 
    </urlFilterCollection> 
</urlFilterSection> 

UrlFilterSection:

namespace BotFinderApp.Models 
{ 
    public class UrlFilterSection : ConfigurationSection 
    { 
     public UrlFilterSection() 
     {  
     } 

     [ConfigurationProperty("urlFilterCollection", IsDefaultCollection = false)] 
     [ConfigurationCollection(typeof(UrlFilterCollection), AddItemName = "add", ClearItemsName = "clear", RemoveItemName = "remove")] 
     public UrlFilterCollection Urls 
     { 
      get 
      { 
       var urlsCollection = (UrlFilterCollection)base["urlFilterCollection"]; 
       return urlsCollection; 
      } 
     } 
    } 
} 

UrlFilterCollection

namespace BotFinderApp.Models 
{ 
    public class UrlFilterCollection : ConfigurationElementCollection 
    { 
     public UrlFilterCollection() 
     { 
     } 

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

     protected override object GetElementKey(ConfigurationElement element) 
     { 
      return ((UrlFilter)element).Url; 
     } 
    } 
} 

UrlFilter

namespace BotFinderApp.Models 
{ 
    public class UrlFilter : ConfigurationElement 
    { 
     public UrlFilter() 
     { 
     } 

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

     [ConfigurationProperty("numberOfIpsToExtract", DefaultValue = "0", IsRequired = true)] 
     public int NumberOfIpsToExtract 
     { 
      get { return (int)this["numberOfIpsToExtract"]; } 
      set { this["numberOfIpsToExtract"] = value; } 
     } 
    } 
} 
+1

Можете ли вы использовать его в своем приложении? Я имею в виду, это просто компилировать предупреждения времени или вы даже не можете использовать его в своем приложении? – decyclone

+0

UrlFilterCollection serviceConfigSection = ConfigurationManager.GetSection ("urlFilterSection") как UrlFilterCollection; возвращает null ... – timothyclifford

ответ

3

Найдено проблема:

Decyclone было правильно, ошибки были на самом деле просто собрать предупреждения времени.

Реальная проблема была я доступ к моей конфигурации, как это:

UrlFilterCollection serviceConfigSection = ConfigurationManager.GetSection("urlFilterSection") as UrlFilterCollection; 

, когда оно должно было быть, как этот

UrlFilterSection serviceConfigSection = ConfigurationManager.GetSection("urlFilterSection") as UrlFilterSection; 

Спасибо FlipScript и Decyclone :)

UPDATE:

Я узнал, как удалить предупреждения о компиляции - я использую usin g Visual Studio 2010. После создания моей секции пользовательских настроек я использовал кнопку «Создать схему» на панели инструментов, которая генерирует файл схемы для конфигурации. Затем я сохранил это в своем проекте, и предупреждения исчезли.