Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查ServiceHost是否处于活动状态_C#_.net_Wcf - Fatal编程技术网

C# 检查ServiceHost是否处于活动状态

C# 检查ServiceHost是否处于活动状态,c#,.net,wcf,C#,.net,Wcf,我有一个带有bool isAlive()方法的NetNamedPipeBinding,我想用它检查ServiceHost是否处于活动状态 目前看起来是这样的: while (!stopThread) { Thread.Sleep(1000); try{ try { pipeproxy.isAlive(); }

我有一个带有bool isAlive()方法的NetNamedPipeBinding,我想用它检查ServiceHost是否处于活动状态

目前看起来是这样的:

 while (!stopThread)
        {
            Thread.Sleep(1000); 
            try{
              try
              {
                 pipeproxy.isAlive();
              }
              catch (CommunicationObjectFaultedException)
              {
                 pipeproxy = pipeFactory.CreateChannel();
              }
            }                
            catch (EndpointNotFoundException)
            {

               //Show notification
                  stopThread=true;
            }
            catch{}
        }
   //Close Application
令人惊讶的是,即使没有主机,我也可以创建一个通道,所以我不确定这是否是正确的方法


提前感谢。

CreateChannel未连接到该服务,这仅在您呼叫该服务时发生

只要
pipeFactory
中引用的服务可用,您就可以从中创建新通道。代理可能独立于服务而出现故障。那么,进行isAlive检查的正确方法是什么?为什么需要检查其是否处于活动状态?在ServiceHost上注册故障状态。我假设它托管在托管应用程序中,确保您的所有服务调用都使用try/catch,并且不要抛出catch,而是发回错误契约。