我有一个wcf服务主机(控制台应用程序)和netTCPBinding上的客户端。 在我的要求主机宕机并经常出现。我的客户应该处理主机,并检查主机是否每1分钟一次。当我试图理解和实现我遇到了很多解决方案。 1. WS-Discovery 2.服务器中的IsAlive 3. Ping方法等 4.民意调查
private static bool IsConnectionUp()
{
_logClient = new LogClient();
try
{
_logClient.Open();
return true;
}
catch (FaultException exception)
{
if (_logClient.State == CommunicationState.Faulted)
{
_logClient = new LogClient();
}
return false;
}
}
Main()
{
while (IsConnectionUp()!=true)
{
IsConnectionUp();
}
}
上面的代码好的方法,如果没有请建议。
我想连续从客户端轮询主机。这是我可以采用的最佳方法。 感谢
答案 0 :(得分:0)
现有代码泄漏了危险的连接。您需要实现WCF配置模式(由于WCF团队的API设计错误,这不是正常模式)。
打开连接不一定会测试可用性。打开时我不知道你的装订是做什么的。我怀疑基于HTTP的绑定什么都不做。我不认为可以要求基础HttpWebRequest
基础架构在不提出请求的情况下打开连接。
执行此操作的最佳方法是实施测试方法(例如void Ping() { }
)。使用短暂的超时并处理资源。
非节流循环也是危险的。这基本上是一种拒绝服务攻击。