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

And*_*rko 3 .net wcf client-server

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

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

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

我试过了:

factory = new ChannelFactory<IServer>())
factory.CreateChannel();
Run Code Online (Sandbox Code Playgroud)

factory = new ChannelFactory<IServer>())
factory.Open();
Run Code Online (Sandbox Code Playgroud)

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

先感谢您!

Sam*_*ack 5

不,没有办法在没有打电话的情况下检查端点是否正在收听.有各种各样的原因,客户端可能无法连接到端点,所以是很确定的唯一方法是通过使呼叫.还要记住,端点可能随时无法访问,因此客户需要为此做好准备.

所以有两种选择:

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