Это будет циклическая ловушка ссылок ( здесь - что-то об этой теме), и причина вашего CommunicationObjectFaultedException
будет выглядеть примерно так:
using (var client = new ServiceClient())
{
data = client.GetDirectories(true);
}
Причина в том, что необработанное исключение вызвало сбой канала, и using
пытается вызвать Close
на этом сбойном канале - это недопустимый переход в автомате состояния канала (и одна большая странность WCF), в результате чего вы упомянули исключение, которое вы упомянули , Есть много способов избежать этого, но основа:
ServiceClient client = null;
try
{
client = new ServiceClient();
data = client.GetDirectories(true);
}
finally
{
if (client != null)
{
if (client.State == CommunicationState.Faulted)
{
client.Abort();
}
else
{
client.Close();
}
}
}