【问题标题】:Different 'behaviorConfiguration' for second endpoint第二个端点的不同“行为配置”
【发布时间】:2016-05-26 07:09:30
【问题描述】:

我对 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 服务证书,但它只需要第二个端点。

提前谢谢各位。

【问题讨论】:

标签: c# .net wcf wcf-binding


【解决方案1】:

从父类创建新的接口和类:

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

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

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

【讨论】:

  • 漂亮又简单,我喜欢。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2014-03-21
    • 2014-05-12
    • 2014-11-11
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多