C# 如何检查WCF服务是否可用?

C# 如何检查WCF服务是否可用?,c#,wcf,wcf-proxy,C#,Wcf,Wcf Proxy,我是否可以使用Proxy.Open()作为连接是否应该工作的指示? 我想先检查连接是否可用,然后,如果不可用,在应用程序运行期间,我不会对服务进行任何调用 注意:我只需要检查连接,不一定要检查整个客户端服务的往返 我最终按照建议在服务中创建了一个Ping()方法 仅供参考,使用simply Open()根本不起作用-即使服务脱机,Open()也不会引发任何异常 考虑到影响WCF服务调用成功的变量太多,我倾向于在服务中添加一个虚拟void KnockKnock()方法,以真正证明连接是否有效 此方

我是否可以使用
Proxy.Open()
作为连接是否应该工作的指示? 我想先检查连接是否可用,然后,如果不可用,在应用程序运行期间,我不会对服务进行任何调用

注意:我只需要检查连接,不一定要检查整个客户端服务的往返

我最终按照建议在服务中创建了一个Ping()方法


仅供参考,使用simply Open()根本不起作用-即使服务脱机,Open()也不会引发任何异常

考虑到影响WCF服务调用成功的变量太多,我倾向于在服务中添加一个虚拟void KnockKnock()方法,以真正证明连接是否有效


此方法还可以起到双重作用:您可以将其称为async,以通知服务器必须为传入请求做好准备。(只是服务的初始启动可能需要一些时间。)通过调用KnockKnock()方法,服务器可以开始加载服务,并为客户端提供更好的初始响应性能。

我总是在我的服务中添加一个不做任何事情的方法
Ping
,并在进行任何真正的通信之前调用该方法。不过,我很想知道是否有内置的替代方案,这可以告诉你现在是否可以打开连接,但5毫秒后,你的实际呼叫仍然可能失败。尝试检查这一点真的没有意义——你不会从中获得任何有用的信息。您只需准备好任何WCF调用失败-并适当处理它谢谢,请参阅我添加的注释,您认为Open()可以用于简单的连接检查吗?它将打开到服务器的网络连接-成功后,将State属性设置为“Opened”。这样,您可以检查当前的网络连接,但不能保证服务将运行。(因为Open()不会初始化服务。)->我会选择一个虚拟方法。