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

我需要两个TCP端口(以及因此使用netTcpBinding)。该服务主机应该首先尝试绑定到第一个端口。如果失败了,且仅当它出现故障时,它应该尝试绑定到所述第二端口。

修改

我已知它可以被编程achived,但我打算以声明做(使用.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()

其他提示

在服务器侧就没有问题暴露服务有两个绑定。

但在客户端,你会得到一个重复的合同错误(或类似的话)

要做到这一点的一种方式是创建两个接口是除名称相同(合同)。

您有实施的单个副本,从该实现每个服务继承。

您再对不同端口的两个服务,即具有相同的实现/功能。

在客户端,那么你需要的程序,它首先尝试在第一端口和如果失败它试图第二。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top