如何在预期的异常上隐藏WCF故障状态消息框?

时间:2014-02-03 22:46:06

标签: wcf service exception-handling messagebox

我有一个支持多种类型设备的应用程序。支持的其中一个设备需要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。

1 个答案:

答案 0 :(得分:0)

你有Google搜索或搜索过吗? 当您尝试使用代理时,我不认为处于故障状态的客户端通道会抛出CommunicationObjectFaultedException。您需要检查客户端是否处于故障状态。

检查已接受的答案here