我有一个支持多种类型设备的应用程序。支持的其中一个设备需要WCF服务才能连接到它。
我有一个不断检查服务的线程,如果找到它,那么它可以继续调用必要的代码来尝试连接到设备......如果服务正在运行,这一切都正常。
但是,对于服务未运行或不可用(用户可能甚至不使用该设备)的情况,将抛出EndpointNotFoundException。我希望这个例外发生,我在try / catch中捕获它。但是,我仍然会弹出一条错误消息,指出“通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态”。如何隐藏/禁用此错误框?
protected override void OnTimerCallback(object state)
{
ServiceClient proxy = new ServiceClient("NetNamedPipeBinding_IService");
try
{
proxy.Open();
// do some stuff here...
proxy.Close();
}
catch (EndpointNotFoundException)
{
// just ignore, expected if service isn't running
}
catch (CommunicationObjectFaultedException)
{
// just ignore, expected if service isn't running
}
}
顺便说一下,我正在使用.NET 3.5。
答案 0 :(得分:0)
你有Google搜索或搜索过吗? 当您尝试使用代理时,我不认为处于故障状态的客户端通道会抛出CommunicationObjectFaultedException。您需要检查客户端是否处于故障状态。
检查已接受的答案here