检查WCF服务是否正在运行的最快方法

NMu*_*nro 4 c# port wcf tcp

我有一个本地运行的WCF服务.该服务具有运行的默认端口,但如果该端口已在使用中,则我动态分配该端口.

我在主机中添加了这个以使其可被发现:

serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());
Run Code Online (Sandbox Code Playgroud)

现在我的客户端需要连接到这台主机.在客户端我想让它首先尝试默认端口,如果它无法连接到默认端口上的服务,那么它将进行发现.

我发现这个发现需要大约20-30秒,所以我宁愿避免一直这样做,只有当它无法在默认端口上找到主机时.

所以我的问题是:确定我的主机是否在默认端口上的最快方法是什么?

我正在考虑做一些事情,比如将客户端上的打开超时设置为10秒,然后在打开时执行try/catch,但仍需要等待10秒.

NMu*_*nro 5

因此,client.Open();如果您的端点不正确,调用将不会抛出任何异常.

我在我的服务中添加了一个方法IsAlive(),它只返回true.所以我client.IsAlive();打开后调用,如果端点不正确,几乎会立即出现异常.