C# 检查ServiceHost是否处于活动状态
我有一个带有bool isAlive()方法的NetNamedPipeBinding,我想用它检查ServiceHost是否处于活动状态 目前看起来是这样的:C# 检查ServiceHost是否处于活动状态,c#,.net,wcf,C#,.net,Wcf,我有一个带有bool isAlive()方法的NetNamedPipeBinding,我想用它检查ServiceHost是否处于活动状态 目前看起来是这样的: while (!stopThread) { Thread.Sleep(1000); try{ try { pipeproxy.isAlive(); }
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,而是发回错误契约。