2009-08-12 109 views
1

我正在開發一個n層智能客戶端應用程序。應用程序的客戶端部分分爲兩層。一個接口應用程序和客戶端業務庫,用於檢索接口並將數據提供給接口。數據通過WCF服務net.tcp和http集合提供,具體取決於客戶端連接。應用程序配置難題

我的問題是,接口對wcf服務一無所知(因爲我們想要)配置system.serviceModel綁定信息存儲在配置爲lib而不是exe。除非我將system.serviceModel部分複製到exe配置中,否則應用程序無法找到端點。

這樣我就可以創建一個副本app.config文件的一些預生成事件:

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

但坦率地說,是胡扯(其直副本未合併),我想一個更好的辦法工作吧.... 任何想法? 謝謝

+0

愛字難題 – 2009-08-12 17:02:28

+0

我以前出現過此問題,但忘了我是如何解決它的:-) – 2009-08-12 17:13:33

回答

4

您是否嘗試過使用configSource元素從外部配置文件導入相關部分? last answer in this 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(縮短):

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

+1優秀的答案 - 那樣,一個大部分配置也可以在服務器和客戶端之間共享;畢竟,雙方需要就綁定,(一些)行爲和端點地址達成一致 – 2009-08-12 18:36:29

+0

感謝Fredrik!很好的答案! – jaimie 2009-08-14 08:01:57