我的服务目前正在运行
localhost:17722/Book.svc
在尝试使用服务之前,我的客户端应用程序如何知道服务是否正在运行?
答案 0 :(得分:5)
只有某种 ping
但是没有保证,在ping完之后,服务将不会在您的真实请求之前下降
总结:
准备克林以处理死亡服务,故障等
答案 1 :(得分:5)
在使用服务器之前,请不要检查服务器是否已启动。使用服务并处理呼叫期间发生的任何错误。
即使您检查服务是否已启动,它也会在您检查服务已启动和您致电服务之间发生故障。因此,即使你检查它是否已启动,你仍然需要在使用它时将其处理掉。
检查服务是否已启动的最佳方法是尝试使用它。
答案 2 :(得分:4)
我会在这种情况下应用Tell, don't ask的校长。只是尝试执行您打算执行的任何操作,然后在失败时处理异常。
如果没有必要对程序进行操作,为什么您的程序会使用服务?
Hey service, can I invoke your 'X' method? ... no? ... okay, I didn't want to anyway :P
答案 3 :(得分:1)
在您尝试使用该服务(或ping服务器)之前,这是不可能的。从您的客户端应用程序调用您的Web服务就像调用任何其他Web服务一样,在消费之前,您如何知道“google”的Web服务正在运行?
一旦我遇到类似的问题,我只是暴露了一个返回“某事”(例如return true
)的操作,我打电话来知道服务器应用程序是否“正常”并且期望“超时”或“不工作时出现500“错误。
答案 4 :(得分:1)
在svc中设置一个返回bool或其他东西的虚方法。然后以指定的间隔在后台线程上点击它。如果请求超时,则可以通过显示表示服务无法访问的内容来处理超时。