如何确定未使用的端口来启动 WCF ServiceHost 来托管本地主机 Web 服务器?

我目前正在静态启动我的服务 http://本地主机:XXXX 其中 XXXX 是我的代码中的静态值。

我想用 GetUnusedPort() 调用替换 XXXX...

有什么想法吗?

有帮助吗?

解决方案

我能找到的最好的办法就是尝试,直到找到一个开放的选项......

http://forums.devshed.com/net-development-87/c-how-to-define-if-a-port-is-in-use-371148.html

    public static bool TryPortNumber(int port)
    {
        try
        {

            using (var client = new System.Net.Sockets.TcpClient(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port)))
            {
                return true;
            }
        }
        catch (System.Net.Sockets.SocketException error)
        {
            if (error.SocketErrorCode == System.Net.Sockets.SocketError.AddressAlreadyInUse /* check this is the one you get */ )
                return false;
            /* unexpected error that we DON'T have handling for here */
            throw error;
        }
    }

其他提示

为什么不能让用户选择他们想要主机上的服务,端口?例如,添加一个值来获取传递到您的ServiceHost应用程序的配置文件。您也可以尝试随机产生一个端口号和测试,看看它是开放的,那么如果其他应用程序已经在使用它重复这个过程。

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