第二个端点的'behaviorConfiguration'不同

时间:2016-02-15 11:32:28

标签: c# .net wcf wcf-binding

我是wcf的新手,面对一些我无法在网上找到或被误解的问题。

<service name="Columba.Services.DataConnector.DataConnectorManager" behaviorConfiguration="ServiceBehavior">
    <endpoint address="net.tcp://localhost:8888/IDataConnectorManager/" binding="netTcpBinding" contract="Columba.Services.Common.Contracts.DataConnector.IDataConnectorManager">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

   <endpoint address="net.msmq://./private/columba/IQueueItems" binding="netMsmqBinding" bindingConfiguration="MSMQBinding" contract="Columba.Services.Common.Contracts.Delivery.IQueueItems" >
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

  </service>

我想要实现的是将behaviorConfiguration =“ServiceBehavior”更改为仅针对第二个端点的不同behaviorConfiguration(位于serviceBehaviors标记处)。是否有可能实现这样的功能?!

新行为是配置serviceCredentials服务证书,但只需要第二个端点。

先谢谢你们。

2 个答案:

答案 0 :(得分:4)

从父母创建新的界面和类:

interface IDataConnectorManager2 : IDataConnectorManager
{}
public class DataConnectorManager2: DataConnectorManager, IDataConnectorManager2 {}

然后在config中使用新创建的类/接口和其他行为创建第二个服务:

<service name = "DataConnectorManager" behaviorConfiguration="behavior1">
 <endpoint address="endpoint1">
<service>
<service name = "DataConnectorManager2" behaviorConfiguration="behavior2">
 <endpoint address="endpoint2">
<service>

答案 1 :(得分:0)

简短回答,无服务行为仅在服务级别运行。

但是,您可以通过创建一个来自BehaviorExtensionElement的行为类并实现IEndpointBehavior来实现端点级行为,如here所述。