2010-12-14 17 views
5

Ho creato una sezione di configurazione personalizzata per la mia applicazione. Per qualche motivo Visual Studio 2010 non sta raccogliendo e delle mie proprietà personalizzate. Mi sto avvertimenti simili a questo per tutti i tasti "Add":App.Config Problema della sezione di configurazione personalizzata

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

Sei in grado di usarlo nella tua applicazione? Voglio dire, è solo compilare avvisi di tempo o non puoi nemmeno usarlo nella tua applicazione? – decyclone

+0

UrlFilterCollection serviceConfigSection = ConfigurationManager.GetSection ("urlFilterSection") come UrlFilterCollection; restituisce null ... – timothyclifford

risposta

3

trovato il problema:

Decyclone era corretta, gli errori erano in realtà basta compilare gli avvisi di tempo.

Il vero problema era che stava accedendo mia configurazione in questo modo:

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

quando avrebbe dovuto essere come questo

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

Grazie FlipScript e Decyclone :)

UPDATE:

Ho scoperto come rimuovere gli avvisi di tempo di compilazione - Sto usin g Visual Studio 2010. Dopo aver creato la/e sezione/i di configurazione personalizzata, ho utilizzato il pulsante "Crea schema" dalla barra degli strumenti che genera il file di schema per la configurazione. Ho quindi salvato questo nel mio progetto e gli avvertimenti sono scomparsi.

Problemi correlati