2012-12-21 33 views
6

ho creato una sezione di configurazione personalizzata come qui di seguitosezione di configurazione non riconosciuto

<configSections> 
    </configSections> 
    <Tabs> 
    <Tab name="Dashboard" visibility="true" /> 
    <Tab name="VirtualMachineRequest" visibility="true" /> 
    <Tab name="SoftwareRequest" visibility="true" /> 
    </Tabs> 

configurazione personalizzata Gestore della sezione

namespace EDaaS.Web.Helper 
    { 
     public class CustomConfigurationHandler : ConfigurationSection 
     { 
      [ConfigurationProperty("visibility", DefaultValue = "true", IsRequired = false)] 
      public Boolean Visibility 
      { 
       get 
       { 
        return (Boolean)this["visibility"]; 
       } 
       set 
       { 
        this["visibility"] = value; 
       } 
      } 
     } 
    } 

Durante l'esecuzione l'eccezione di applicazione tiro sezione di configurazione non riconosciuto Tabs. Come risolvere questo

+0

è possibile mostrare la tua configurazione di SectionGroup? – dove

+0

Come mostrare questo? – JEMI

+0

hai qualcosa dentro configSections per le schede? – dove

risposta

15

È necessario scrivere un configuration handler per analizzare questa sezione personalizzata. E poi registrare il gestore personalizzato nel file di configurazione:

<configSections> 
    <section name="mySection" type="MyNamespace.MySection, MyAssembly" /> 
</configSections> 

<mySection> 
    <Tabs> 
     <Tab name="one" visibility="true"/> 
     <Tab name="two" visibility="true"/> 
    </Tabs> 
</mySection> 

Ora definiamo la sezione di configurazione corrispondente:

public class MySection : ConfigurationSection 
{ 
    [ConfigurationProperty("Tabs", Options = ConfigurationPropertyOptions.IsRequired)] 
    public TabsCollection Tabs 
    { 
     get 
     { 
      return (TabsCollection)this["Tabs"]; 
     } 
    } 
} 

[ConfigurationCollection(typeof(TabElement), AddItemName = "Tab")] 
public class TabsCollection : ConfigurationElementCollection 
{ 
    protected override ConfigurationElement CreateNewElement() 
    { 
     return new TabElement(); 
    } 

    protected override object GetElementKey(ConfigurationElement element) 
    { 
     if (element == null) 
     { 
      throw new ArgumentNullException("element"); 
     } 
     return ((TabElement)element).Name; 
    } 
} 

public class TabElement : ConfigurationElement 
{ 
    [ConfigurationProperty("name", IsRequired = true, IsKey = true)] 
    public string Name 
    { 
     get { return (string)base["name"]; } 
    } 

    [ConfigurationProperty("visibility")] 
    public bool Visibility 
    { 
     get { return (bool)base["visibility"]; } 
    } 
} 

e ora è possibile accedere alle impostazioni:

var mySection = (MySection)ConfigurationManager.GetSection("mySection"); 
+0

Non sta funzionando – JEMI

+0

Ho aggiunto una sezione nella sezione di configurazione come questa

JEMI

+0

State ottenendo un errore? –

Problemi correlati