2009-12-01 18 views
0

我在.NET 4.0中使用ws-discovery,它运行良好。我有一个问题是如何处理无法正常工作的服务。例如,假设我在服务器A和服务器B上有IService。假设服务器A上的这个服务已经中断(通过停止应用程序池来模拟这一点)。您的客户仍然会找到2项服务,因此当您尝试使用该服务时,您无法保证它是正常工作的服务。.net 4 ws-discovery endpoints

所以我的问题是,你是通过循环处理端点来处理这个问题的,如果第一个失败了,就尝试下一个端点。或者有没有办法只检索搜索时“启动”的服务?还是我错过了点某处 - 很可能:-)

感谢

+0

你问客户当它只发现一些它需要的服务时会发生什么?或者,您是否有多个具有相同接口的服务? – 2010-06-14 17:45:38

回答

0

我发现这是WCF发现一个共同的问题。服务器坐在两个网络上时也会出现类似的问题。该发现将返回两个nic地址,但当然,客户端只能通过其中一个网络访问服务器。

我一直在使用的解决方法是向服务器添加一个“void Ping()”函数。然后在发现之后,客户端尝试在所有发现的端点上调用此“Ping()”函数。返回响应的是好的,其他的则不好。

我结束了这一步,并产生了一个线程,这个线程偶尔会继续调用这个“Ping()”函数。然后,当一个好的服务器消失时,该线程将从该“好”uris集合中移除该uri。

我感觉到你的痛苦。