我在.NET 4.0中使用ws-discovery,它运行良好。我有一个问题是如何处理不起作用的服务。例如,假设我在服务器A和服务器B上有IService。假设服务器A上的此服务已损坏(通过停止应用程序池模仿)。您的客户仍然会找到2项服务,因此当您尝试使用该服务时,您无法保证它是可用的服务。
所以我的问题是,你是通过循环遍历端点来解决这个问题吗?如果第一个失败则尝试下一个端点。或者有没有办法只检索搜索时“向上”的服务?或者我错过了某个地方 - 很可能: - )
由于
答案 0 :(得分:0)
我发现这是wcf发现中的常见问题。当服务器位于两个网络上时会发生类似的问题。该发现将返回两个nic地址,但当然,客户端只能通过其中一个网络到达服务器。
我一直在使用的解决方法是向服务器添加“void Ping()”函数。然后在发现之后,客户端尝试在所有发现的端点上调用此“Ping()”函数。返回响应的是好的,其他的则是坏的。
我最终更进了一步,产生了一个线程,偶尔会继续调用这个“Ping()”函数。然后,当一个好的服务器消失时,该线程会从'good'uris的集合中删除该uri。
我感到痛苦。
答案 1 :(得分:-1)
本文似乎通过在运行时确定端点地址来涵盖您所谈论的内容。
http://weblogs.asp.net/gsusx/archive/2009/02/13/using-ws-discovery-in-wcf-4-0.aspx