wcf - 同一服务上的服务结构多个 WCF 终结点
问题描述
我正在尝试为服务创建 2 个端点:net.tcp 和 http。两个端点将具有相同的端点名称。如何在服务结构中做到这一点?
在 SF 中不运行时,很容易在 App config 中定义它,这样:
<service behaviorConfiguration="DefaultBehavior" name="ContractImplementation">
<endpoint address="net.tcp://localhost:6000/ContractName" binding="netTcpBinding" bindingConfiguration="netTcpBinding" contract="ContractName" />
<endpoint address="http://localhost:6001/ContractName" binding="basicHttpBinding" bindingConfiguration="httpBinding" contract="ContractName" />
</service>
在 SF 中运行时,我通过创建 WcfCommunictionListener 对象来创建侦听器。我无法使用不同的绑定创建另一个,因为它抱怨端点名称已在使用中。
解决方案
如此处的文档中所述:
为服务创建多个侦听器时,必须为每个侦听器指定一个唯一名称。
端点名称必须具有不同的名称,您可以在创建侦听器的逻辑中处理加载,您应该为每个端点创建一个侦听器并传递每个端点的名称;
像这样的东西:
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new[]
{
new ServiceReplicaListener(context =>
new WcfCommunicationListener<ICalculator>(
wcfServiceObject:this,
serviceContext:context,
endpointResourceName: "WcfServiceEndpoint1",
listenerBinding: WcfUtility.CreateTcpListenerBinding()
)
),
new ServiceReplicaListener(context =>
new WcfCommunicationListener<ICalculator>(
wcfServiceObject:this,
serviceContext:context,
endpointResourceName: "WcfServiceEndpoint2",
listenerBinding: WcfUtility.CreateTcpListenerBinding()
)
)
};
}
有关如何使用的更多信息,WcfCommunicationListener
请查看此处
推荐阅读
- sql-server - 填满指令的 MSSQL 执行表
- python - AttributeError:“float”对象没有属性“to_excel”
- android - 如何旋转对话框(带动画)?
- r - 根据 R 中的条件删除/过滤行
- c++ - 如何将 QImage 格式化为 BAYER 颜色 (GRBG)?
- wordpress - 在 Wordpress 古腾堡编辑器的根容器中添加一个类
- c# - 在 azure sql 上连接到数据库的问题
- typescript - 为什么不为复杂对象“输入”窄类型?
- python - 黑帽 Python - 数据包嗅探器 - 调试
- java - Microsoft TPM Tss.java 实现 Samples.java 给出错误