When a single ClientBase instance is used for multiple WCF service calls, it can get a channel into a faulted state (ie. when the service is down).
This is what I'm currently doing, but I can't say this is the best option either.
I recreate the proxy when an exception is caught on the call.
try
{
ListCurrentProcesses();
}
catch (TypeLoadException ex)
{
Debug.Print("Oops: " + ex.Message);
m_Proxy = new ProcessManagerProxy();
}
catch (EndpointNotFoundException endpointEX)
{
Debug.Print("Oops: " + endpointEX.Message);
m_Proxy = new ProcessManagerProxy();
}
catch (CommunicationException communicationEx)
{
Debug.Print("Oops: " + communicationEx.Message);
m_Proxy = new ProcessManagerProxy();
}