2009-08-12 7 views
1

Je développe une application client intelligente à plusieurs niveaux. La partie client de l'application est divisée en deux niveaux. Une application d'interface et une bibliothèque d'entreprise client qui récupère et sert des données à l'interface. Les données sont fournies via une collection de services WCF net.tcp et http en fonction de la connectivité du client.Application Config Conundrum

Mon problème est que l'interface ne sait rien des services wcf (comme nous voulons) les informations de liaison de configuration system.serviceModel sont stockées dans la config pour la lib plutôt que l'exe. À moins de copier la section system.serviceModel dans la configuration exe, l'application ne trouve pas les points de terminaison.

Je pourrais créer un événement pré-construction qui copie le fichier app.config:

attrib -r "$(ProjectDir)app.config" copy "$(SolutionDir)Domain\Client\app.config" "$(ProjectDir)" 

mais, franchement, est de la merde (son une copie droite ne fusionnera pas) et je veux une meilleure façon de Travailler .... Des idées? Merci

+0

L'amour l'énigme mot –

+0

J'ai eu ce problème avant , mais oublie comment je l'ai résolu :-) –

Répondre

4

Avez-vous essayé d'importer les sections pertinentes à partir d'un fichier de configuration externe à l'aide de l'élément configSource? Le last answer in this discussion fournit une solution qui peut fonctionner pour vous.

cité de cette discussion:

<!-- WCF Configuration Mappings in app.config --> 
<system.serviceModel> 
    <bindings configSource=".\CommonConfig\ServiceBindings.config" /> 
    <client configSource=".\CommonConfig\ServiceClient.config" /> 
</system.serviceModel> 

ServiceBindings.config:

<?xml version="1.0" encoding="utf-8" ?> 
<bindings> 
    <netTcpBinding> 
    <binding ... /> 
    </netTcpBinding> 
</bindings> 

ServiceClient.config (raccourcies):

<?xml version="1.0" encoding="utf-8" ?> 
<client> 
    <endpoint ...> 
     ... 
    </endpoint> 
</client> 
+0

+1 excellente réponse - de cette façon, un une grande partie de la configuration peut également être partagée entre le serveur et le client; après tout, les deux parties doivent se mettre d'accord sur les liaisons, (certains) comportements, et les adresses de point de terminaison –

+0

Merci Fredrik! Très bonne réponse! – jaimie

Questions connexes