2010-05-11 7 views
18

Voglio separare la mia sezione system.serviceModel di web.config in un file separato per facilitare alcune impostazioni dell'ambiente. I miei sforzi sono stati infruttuosi. Quando provo usando questo metodo. Il codice WCF genera un'eccezione: "L'inizializzatore di tipo per 'System.ServiceModel.ClientBase 1 ha generato un'eccezione Qualcuno può dirmi che cosa sto facendo malePosso dividere system.serviceModel in un file .config separato?

web.config:.?

<configuration> 
    <system.serviceModel configSource="MyWCF.config" /> 
    .... 

MyWCF. config:

<system.serviceModel> 
    <extensions> 
     ... 
    </extensions> 

    <bindings> 
     ... 
    </bindings> 

    <behaviors> 
     ... 
    </behaviors> 

    <client> 
     ... 
    </client> 

    </system.serviceModel> 

risposta

32

Non si può "esternare" il gruppo <system.serviceModel> sezione - dal momento che si tratta di una sezione di configurazione gruppo - ma si può sicuramente esternare ciascuno dei bit all'interno di esso:

<system.serviceModel> 
    <behaviors configSource="behaviors.config" /> 
    <bindings configSource="bindings.config" /> 
    <extensions configSource="extensions.config" /> 
    <client configSource="client.config" /> 
    <services configSource="services.config" /> 
</system.serviceModel> 

Nel sistema di configurazione di .NET, qualsiasi la sezione di configurazione può essere esternalizzata - ogni sezione di configurazione ha un attributo configSource (anche se a volte Visual Studio lamenta e rivendica il contrario .....) - ma non i gruppi di sezioni di configurazione.

Sfortunatamente, questi due sono difficili da distinguere: è necessario consultare la libreria o la documentazione MSDN per scoprirlo.

Si dovrebbe anche controllare la serie in tre parti di Jon Rista sul sistema di configurazione .NET su CodeProject.

Altamente raccomandato, ben scritto e estremamente disponibile!

+1

Bel suggerimento ... questa sezione può diventare davvero affollata. – JoeGeeky