WCF:对单个服务使用多个绑定

时间:2010-05-22 15:23:00

标签: wcf wcf-binding

我有一个WCF服务(在3.0中),使用wsHttpBinding正常运行。我想将netTcpBinding绑定也添加到同一个服务。但我面临的挑战是添加behaviorConfiguration。

如何修改以下代码以启用绑定服务?请帮忙......

    

  <service name="Lijo.Samples.WeatherService"
           behaviorConfiguration="WeatherServiceBehavior">

    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServiceModelSamples/FreeServiceWorld"/>
        <add baseAddress="net.tcp://localhost:8052/ServiceModelSamples/FreeServiceWorld"/>
        <!-- added new baseaddress for TCP-->
      </baseAddresses>
    </host>

    <endpoint address=""
              binding="wsHttpBinding"
              contract="Lijo.Samples.IWeather" />

    <endpoint address=""
              binding="netTcpBinding"
              contract="Lijo.Samples.IWeather" />
    <!-- added new end point-->

    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />

  </service>


</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="WeatherServiceBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="False"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

请参阅以下内容以了解更多详情 WCF using windows service

谢谢

Lijo

2 个答案:

答案 0 :(得分:1)

我不完全明白你的问题是什么 - 从我的理解来看,你不确定如何应用服务行为?

您需要考虑两件事:

  • 服务行为可以应用于整个<service>代码 - 因此元数据支持等内容会影响服务本身 - 无论您连接哪个端点至

  • 可以将端点行为应用于端点,这样只影响应用此行为的端点(而不是其他端点)

因此,在您的情况下,WeatherServiceBehavior将应用于服务,从而影响所有端点(例如,无论客户端连接到哪个端点,它都将关闭元数据支持和调试详细信息)。

再说一遍:你的问题究竟是什么?你在哪里被“封锁”或者你想做什么不起作用?

答案 1 :(得分:0)

您应该在端点级别指定net tcp端点的地址,而不是基地址。

在尝试为两者配置之前,还要首先测试是否只使用nettcp绑定以确保它有效。