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

时间:2010-08-12 12:30:52

标签: .net wcf port

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

现在我需要知道实际分配了哪个端口。此代码在服务器上运行,因此我需要本地端口。我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用OperationContext.Channel.LocalAddress.Uri.Port来了解服务调用中使用的端口

答案 1 :(得分:0)

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

更多关于WCF Discovery

答案 2 :(得分:0)

找到有效的东西,即使它有点脏。而不是自动分配端口,显式请求空闲端口并用于创建服务:

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

相关问题