2013-04-28 47 views
1

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

注:我只需要检查连接性,不一定和整个客户服务往返。

I建议按照建议在服务中创建Ping()方法。仅仅使用Open()就行不通 - Open()不会引发任何异常,即使服务处于脱机状态!

+0

我总是在我的服务中添加一个无所事事的方法Ping,并在进行任何实际的通信之前调用该方法。不过,我很想知道是否有内置的选择。 – dasblinkenlight 2013-04-28 10:18:46

+1

这可以告诉你,如果你现在可以打开连接** - 但是5毫秒后,你的实际呼叫仍然会失败。试图*检查这一点真的没有意义 - 你不会从中获得任何有用的信息。你只是**必须为任何WCF调用失败做好准备 - 并对其进行适当处理 – 2013-04-28 10:33:14

回答

2

鉴于有太多影响WCF服务调用成功的变量,我倾向于在服务中添加一个虚拟的void KnockKnock())方法,以便在连接有效时提供真实的证据。

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

+0

谢谢,请参阅我的补充说明,您是否认为Open()可用于简单的连接检查? – 2013-04-28 10:37:53

+1

它会打开一个网络连接到您的服务器 - 成功后将State属性设置为“Opened”。这样您可以检查当前的网络连接,但不能保证该服务将运行。 (因为Open()不会初始化服务。) - >我会简单地去做一个虚拟方法。 – IsNull 2013-04-28 11:05:42

相关问题