代码之家  ›  专栏  ›  技术社区  ›  mafu

如何获得运行WCF服务的本地端口?

  •  2
  • mafu  · 技术社区  · 15 年前

    我在同一台机器上使用多个自托管WCF服务。我需要在不同的端口打开它们(显然),所以我使用了“net:tcp://localhost:0“作为地址,因为我认为这样可以分配一个自由端口。

    地方的 港口。我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  2
  •   CriGoT    15 年前

    你可以用 OperationContext.Channel.LocalAddress.Uri.Port

        2
  •  0
  •   Wojtek Turowicz    15 年前

    然后您需要另一个地方来存储所有服务的端口,以便从服务器外部读取它们。如果它是另一个服务,那么它需要一个固定端口。它也可以是http上的xml文件,也可以是每次服务启动时修改的内容。

    更多关于 WCF Discovery

        3
  •  0
  •   Community CDub    8 年前

    找到了一些有用的东西,尽管有点脏。不是自动分配端口,而是显式请求空闲端口并用于创建服务:

    Address = "net.tcp://localhost:" + FindFreeTcpPort ();
    
    private static int FindFreeTcpPort ()
    {
        TcpListener l = new TcpListener (IPAddress.Parse ("127.0.0.1"), 0);
        l.Start ();
        int port = ((IPEndPoint) l.LocalEndpoint).Port;
        l.Stop ();
        return port;
    }
    

    here )

    推荐文章