第二个端点的不同“行为配置”

本文关键字:配置 行为配置 端点 第二个 | 更新日期: 2023-09-27 18:34:34

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

提前感谢伙计们。

第二个端点的不同“行为配置”

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

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>

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

但是,您可以通过创建从 BehaviorExtensionElement 获取的行为类并嵌入 IEndpointBehavior 来实现端点级行为,如此处所述。