配置WCF以使用两个端点之一

时间:2010-01-27 17:01:07

标签: .net wcf wcf-binding wcf-endpoint

如何配置WCF只使用两个可用端点的一个

我需要两个TCP端口(因此使用netTcpBinding)。服务主机应首先尝试绑定到第一个端口。如果失败,并且只有失败,它应该尝试绑定到第二个端口。

修改

我知道它可以以编程方式获得,但我打算以声明方式(仅使用.config文件)。

2 个答案:

答案 0 :(得分:2)

在使用代理对象打开连接之前,可以在进程中的任何位置在代码中设置端点地址(包括端口号)。因此,您可以设置地址然后测试连接,如果失败,请尝试其他端口。这里有一些代码可以说明我的观点。

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()

答案 1 :(得分:1)

在服务器端,使用两个绑定公开服务没有问题。

但是在客户端,你会得到一个重复的合同错误(或者说是这样的话)

一种方法是创建两个除名称相同的接口(契约)。

您有一个实现的副本,每个服务都继承自此实现。

然后,您在不同的端口上拥有两个具有相同实现/功能的服务。

在客户端上,您需要编程它首先尝试第一个端口然后如果失败则尝试第二个端口。