WCF:如何检查服务器是否可访问?

时间:2011-03-23 09:58:21

标签: .net wcf client-server

我有WCF服务器和WCF客户端。当部署新版本的客户端时,我想检查它是否已准备好运行,因此我必须检查服务器是否在线。

我不想做任何真正的服务器调用(因为调用可以更改生产数据)或在服务器上创建空的{...}“测试”方法,什么都不做。

是否可以检查WCF服务器端点是否存在并在没有方法调用的情况下侦听连接?

我试过了:

factory = new ChannelFactory<IServer>())
factory.CreateChannel();

factory = new ChannelFactory<IServer>())
factory.Open();

但如果服务器处于脱机状态,则没有例外。 如何在没有服务器方法调用的情况下检查服务器是否存在?

提前谢谢!

1 个答案:

答案 0 :(得分:5)

不,没有调用端点就无法检查端点是否正在侦听。客户端可能无法连接到端点的原因有多种,因此唯一可靠的方法是拨打电话。还要记住,端点可能随时无法访问,因此客户需要为此做好准备。

因此,您有两种选择:

  1. 过去,我在我的服务上添加了一个Ping方法,它只返回true。但这只会告诉您该服务当时可用。
  2. 作为一种更可靠的机制,我可能只是在每次服务调用(EndpointNotFoundException IIRC)上捕获相关的WCF异常并从中推断失败。这使您可以容忍一段时间内可能发生的故障 - 例如,在初始连接之后。