У меня есть такая услуга:
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract=typeof(IMyServiceCallback))]
public interface IMyService
{
[OperationContract]
bool CallService();
}
public interface IMyServiceCallback
{
[OperationContract(IsOneWay = true)]
void NotifyClient();
}
В реализации NotifyClient () я пытаюсь сделать вызов CallService (). Это приводит к InvalidOperationException:
Дополнительная информация: Эта операция блокируется, поскольку ответ не может быть получен до тех пор, пока текущее Сообщение не завершит обработку. Если вы хотите разрешить обработку сообщений не по порядку, укажите ConcurrencyMode для Reentrant или Multiple в CallbackBehaviorAttribute.
Мой сервис имеет ServiceBehavior, установленный следующим образом:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Multiple, UseSynchronizationContext=false)]
и мой обратный вызов имеет CallbackBehavior как:
[CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext=false)]
Что может быть причиной этого исключения? Я также пытался использовать ConcurrencyMode.Reentrant, но это не помогает. Я могу обойти эту проблему, вызвав CallService () в рабочем потоке, но я все же хотел бы знать, что вызывает исключение.
Спасибо.
Редактировать: добавлено [OperationContract (IsOneWay = true)], но проблема остается.