如何将 WCF 配置为仅使用两个可用端点之一?
我需要两个 TCP 端口(因此使用netTcpBinding
)。服务主机应首先尝试绑定到第一个端口。如果它失败了,并且只有当它失败时,它才应该尝试绑定到第二个端口。
编辑
我知道它可以通过编程方式实现,但我打算以声明方式(.config
仅使用文件)来实现。
如何将 WCF 配置为仅使用两个可用端点之一?
我需要两个 TCP 端口(因此使用netTcpBinding
)。服务主机应首先尝试绑定到第一个端口。如果它失败了,并且只有当它失败时,它才应该尝试绑定到第二个端口。
编辑
我知道它可以通过编程方式实现,但我打算以声明方式(.config
仅使用文件)来实现。
在您使用代理对象打开连接之前,可以在过程中的任何时候在代码中设置端点地址(包括端口号)。所以你可以设置地址,然后测试连接,如果失败,尝试另一个端口。这里有一些代码,希望能说明我的观点。
Dim oProxy as New YourWCFServiceType()
oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try first"))
Dim FirstBindingSucceeded as Boolean
Try
oProxy.Open()
FirstBindingSucceeded = True
Catch
End Try
If FirstBindingSucceeded = False Then
oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try second"))
End If
oProxy.Open()
在服务器端,公开具有两个绑定的服务没有问题。
但是在客户端,您将收到重复的合同错误(或类似的文字)
一种方法是创建两个除了名称之外相同的接口(合同)。
你有一个实现的副本,每个服务都继承自这个实现。
然后,您在不同的端口上有两个服务,它们具有相同的实现/功能。
然后,在客户端上,您需要对其进行编程,使其首先尝试第一个端口,然后如果失败,则尝试第二个端口。