Вызов Close () в блоках прокси-службы после одностороннего вызова WCF - PullRequest
1 голос
/ 03 августа 2010

У меня есть простая операция Fire and Forget, которая работает нормально и не блокируется.Однако когда я пытаюсь закрыть прокси-сервер службы, он блокируется до тех пор, пока односторонний вызов не будет завершен.Это ожидаемое поведение?

Код клиента:

var serviceProxy = new MyServiceProxy();
serviceProxy.OneWayCall();
serviceProxy.Close();  // This blocks until OneWayCall() is finished.

Служба:

[ServiceContract]
public interface IMyService {
   [OperationContract(IsOneWay = true)]
   void OneWayCall();
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MyService : IMyService {
   public void OneWayCall() {
      // Stuff and things
   }
}

Ответы [ 2 ]

3 голосов
/ 03 августа 2010

Да - в зависимости от привязки / конфигурации, которую использует ваша служба, и от того, используете ли вы сеансы каким-либо образом См. Ссылку ниже для получения информации о конфигурациях, которые приводят к блокировке:

Лучшая практика WCF # 5: односторонний путь не всегда односторонний

Надеюсь, что поможет

1 голос
/ 24 января 2013

для полноты картины; Вот что Microsoft говорит об этом поведении:

Блокировка клиентов с помощью односторонних операций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...