2009-08-12 108 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