代码之家  ›  专栏  ›  技术社区  ›  Michael Damatov

将WCF配置为使用两个端点之一

  •  0
  • Michael Damatov  · 技术社区  · 15 年前

    如何将WCF配置为仅使用 两个可用的端点?

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

    编辑

    我知道它可以通过编程实现,但我的意图是声明性的(使用 .config 仅文件)。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jacob Ewald    15 年前

    在使用代理对象打开连接之前,可以在进程中的任何点的代码中设置端点地址(包括端口号)。因此,您可以设置地址,然后测试连接,如果失败,请尝试另一个端口。下面是一些代码,希望能说明我的观点。

    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()
    
        2
  •  1
  •   Shiraz Bhaiji    15 年前

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

    但是在客户方面,你会得到一个重复的合同错误(或意思是这样的话)。

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

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

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

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

    推荐文章