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