检测WCF服务是否已激活

4
我正在制作一个WP8应用程序。 我注意到如果服务器正常工作,一切都很好, 但如果服务器宕机,我会收到一个异常。
在代码中如何检查wcf服务是否已激活,然后再使用其方法?

参考类似问题:http://social.msdn.microsoft.com/Forums/vstudio/en-US/e15e8549-a6aa-48e5-99d7-37c39100a4d6/check-web-service-status?forum=csharpgeneral - user2160375
你能指导我找到正确的解决方案吗? - Arie
@Arie,你能提供一段代码示例展示如何使用该服务吗?根据你的方法,异常处理会有所不同。 - zaitsman
你能说一下WCF服务是如何托管的吗?因为自托管和IIS中可能会有很大的不同。 - ZZZ
它托管在Azure云中。 我注意到,如果我尝试在Azure服务器重新启动时通过wp8应用程序连接到wcf,则会抛出异常。 - Arie
3个回答

3

在你的Web服务中实现一个无操作方法并使用较低的超时调用它。如果成功,服务已经启动。如果由于任何原因调用失败,则服务已经停止。

实际上,为什么服务器经常宕机呢?也许要确保它始终可用会更容易些。


如何设置低超时时间? 服务器不会定期关闭,但我希望应用程序在它停止运行时不会崩溃。 - Arie
1
你无法找到如何更改WCF的超时时间吗?如果您不希望应用程序崩溃(可以理解),您可能应该处理错误。无论如何,您都必须这样做。 - usr

1
如果您想检查服务器是否正常运行,可以使用Ping()类。在其中,您可以根据网络配置轻松定义超时时间,以判断服务器是否正在运行。
如果您想要检查服务器上的服务是否正在运行,您可以在服务器端定义一个如下的方法:
public bool IsRunning() { return true; }

使用try-catch块来处理客户端的FaultException。调用此方法时,如果服务停止运行,它将返回true或引发异常。在调用其方法之前,您可能还希望检查客户端WCF代理是否未处于故障状态。


0

这是没有捷径可走的。这是一个非常特殊的情况。如果您确保服务器没有宕机,可以轻松地ping它或尝试下载一个简单的静态文件,例如文本/HTML文件,大小越小越好。supafly的答案并没有错,但这与您所处的情况相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接