WCF客户端检查WCF主机是否已启动并正在运行?

时间:2016-04-05 08:18:43

标签: .net wcf

我有一个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();
                }
    }

上面的代码好的方法,如果没有请建议。

我想连续从客户端轮询主机。这是我可以采用的最佳方法。 感谢

1 个答案:

答案 0 :(得分:0)

现有代码泄漏了危险的连接。您需要实现WCF配置模式(由于WCF团队的API设计错误,这不是正常模式)。

打开连接不一定会测试可用性。打开时我不知道你的装订是做什么的。我怀疑基于HTTP的绑定什么都不做。我不认为可以要求基础HttpWebRequest基础架构在不提出请求的情况下打开连接。

执行此操作的最佳方法是实施测试方法(例如void Ping() { })。使用短暂的超时并处理资源。

非节流循环也是危险的。这基本上是一种拒绝服务攻击。