2012-08-08 15 views
11

Ecco il mio app.configConfigurationManager.GetSection restituisce null

<configuration> 
    <configSections> 
     <section name="procedureList" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.30319, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
    </configSections> 

    <procedureList> 
    <add key="NAS.spBusObjGetLineProd" value="@area='Melt Shop';@endDt=?date?;@dayonly=1;@obj='Melt Shop Business Objective" /> 
    <add key="NAS.spBusObjGetLineProd" value="@area='Cold Mill';@endDt=?date?;@dayonly=1;@obj='Cold Mill Business Objective" /> 
    </procedureList> 
    <appSettings> 
    <add key="Connstr" value=""/> 
    <add key="Userid" value=""/> 
    <add key="Timeout" value=""/> 
    </appSettings> 

</configuration> 

Ma quando io lo chiamo in codice, sto diventando un null indietro

public void samplemethod() 
{ 
    NameValueCollection nvc = ConfigurationManager.GetSection("procedureList") as NameValueCollection; 
    string[] keys = nvc.AllKeys; 
} 

Gradirei qualsiasi aiuto sottolineando cosa ho fatto di sbagliato

+0

stai trasmettendo in modo errato. Pubblicherò un esempio di seguito insieme a un collegamento che puoi utilizzare come riferimento – MethodMan

+0

Se l'operazione di conversione 'as' non riesce, restituisce un valore nullo. Tuttavia, il file di configurazione nota che il tipo di sezione è 'NameValueSectionHandler': si dovrebbe eseguire il casting su questo tipo quando si chiama GetSection(). –

+0

anche quando cambio il tipo in NameValueSectionHandler, sto ancora ottenendo un valore null – edepperson

risposta

5

Using section handlers to group settings in the configuration file

Per esempio è possibile seguire qualcosa come t ha seguito

private void ReadSettings() 
{ 
    NameValueCollection loc = 
    (NameValueCollection)ConfigurationSettings.GetConfig("procedureList"); 
} 

MSDN ConfigurationManager.GetConfig Method

+0

ottenendo ancora il null – edepperson

+5

capito. Ho avuto la configurazione dell'app nella DLL, non il modulo di chiamata. dato che alla fine la dll verrà chiamata da un servizio, devo correggerla con ConfigurationManager.OpenExeConfiguration. Grazie per l'incoraggiamento. – edepperson

+1

Non è un problema .. è per questo che chiedo sempre agli sviluppatori se eseguono il debug del loro codice .. è uno strumento fantastico il Debugger ... contento che tu abbia funzionato – MethodMan

1

Se si sta testando la classe tua deve copiare la configurazione al app.config nel progetto di prova.