Закрыть и прервать в сервисном канале

Мой клиент использует одну службу WCF, которая выдает исключение (ИСКЛЮЧЕНИЕ: объект связи System.ServiceModel.Channels.ServiceChannel не может использоваться для связи, поскольку он находится в состоянии Faults). Все последующие вызовы выдают одно и то же исключение.

Я прочитал в Интернете, что клиент должен закрыть канал ()/Abort(), это решит проблему. это совершенно верно?

Также я пользуюсь сервисом обслуживания клиентов Channel Channel, предоставленным разработчиками сервиса. Когда я создаю канал, он не показывает методы закрытия и прерывания. Итак, как мне получить эти методы закрытия и прерывания, когда я создаю пользовательский экземпляр канала службы на стороне клиента?

1 ответ

Решение

Предполагая, что у вас есть прокси-экземпляр, который реализует интерфейс IClientChannel, вот способ (надеюсь, правильный) его использовать.

IClientChannel clientChannel = (IClientChannel)proxy;
bool success = false;

try
{
    // do something with the proxy
    clientChannel.Close();
    success = true;
}
finally
{
    if (!success)
    {
        clientChannel.Abort();
    }
}

Вы также можете проверить это. Вы можете обернуть свои операции, используя общий класс или функцию.

Другие вопросы по тегам