Оставление соединения WCF открытым все время против воссоздания клиента при каждом вызове - PullRequest
1 голос
/ 24 мая 2019

Это дополнительный вопрос к этому вопросу:

Что может быть причиной ошибки «Не удается получить доступ к удаленному объекту» в WCF?

Я также обнаружил исключение «Не удается получить доступ к удаленному объекту» после попытки повторно открыть соединение с клиентом после того, как соединение было закрыто. Я делал это:

try
{
   if (!(client.State == CommunicationState.Opened) && !(client.State == CommunicationState.Opening))
   {
         await Task.Run(() => client.Open());
   }
   ...
finally
{
    client.Close();
}

После повторного ввода кода было выдано исключение.

Принятый ответ в связанном вопросе предполагает либо:

1) Делать что-то вроде client = new WebServiceClient() каждый раз, когда необходимо вызвать веб-сервис.

2) Реализация IDisposable и избавление от клиента в методе Dispose путем закрытия его только там, но это означает, что соединение должно оставаться открытым все время ..

Существует ли соглашение о том, как справиться с этой ситуацией?

...