在客户端创建具有多个端点的WCF代理

时间:2013-01-15 07:51:06

标签: wcf

我有两个端点的服务。一个端点用于wsdual绑定,另一个端点用于tcp绑定。当我使用 wcfsvchost.exe 开始我的wcf服务时

WcfSvcHost.exe /service:"C:
\Users\TRIDIP\Documents\Visual Studio 2010\Projects\BBAChatService\BBAChatService\bin
\BBAChatService.dll" /config:"C:\Users\TRIDIP\documents\visual studio 2010\Projects
\BBAChatService\BBAChatService\Web.config"

然后我的服务开始了。

问题是当我尝试在使用WcfSvcHost.exe启动服务后在客户端创建代理时,所有端点相关信息都会添加到客户端的配置文件中,但我希望当我将使用tcp mex端点或mexHttpBinding从客户端创建代理时那么只应在客户端的配置文件中添加有效的端点而不是所有端点。所以请指导我在服务端配置文件中要更改的内容。这是我在服务端的配置文件....请看看。

<service name="BBAChatService.ChatService" behaviorConfiguration="BBAChatService.ChatServiceBehavior" >
        <host>
          <baseAddresses>
            <add baseAddress ="http://localhost:8732/ChatService.svc/"/>
            <add baseAddress ="net.tcp://localhost:7998/ChatService/"/>
          </baseAddresses>
        </host>

        <endpoint name="dual_bind"
                  address="dual"
                  binding="wsDualHttpBinding" 
                  bindingConfiguration="WSDualHttpBinding_IChatService" 
                  contract="BBAChatService.IChatService">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

        <endpoint name="tcp_bind"
              address="tcp"
              binding="netTcpBinding"
              bindingConfiguration="tcpBinding"
              contract="BBAChatService.IChatService">
        </endpoint>

        <endpoint address="net.tcp://localhost:7996/ChatService/mex"
                          binding="mexTcpBinding"
                          contract="IMetadataExchange"/>


      </service>

指导我在配置中更改内容。感谢

1 个答案:

答案 0 :(得分:1)

如果在同一服务中公开多个端点,则WSDL中有多个端口,svcutil(添加服务引用)将为每个提供的端口导入配置。 WSDL始终公开服务的所有已定义端点,并且svcutil适用于所有端点。

您必须手动修改客户端配置以删除客户端上的HTTP端点配置,或者必须将服务拆分为两个不同的实现,每个实现都有一个端点。