我有这样的服务:
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract=typeof(IMyServiceCallback))]
public interface IMyService
{
[OperationContract]
bool CallService();
}
public interface IMyServiceCallback
{
[OperationContract(IsOneWay = true)]
void NotifyClient();
}
在 NotifyClient() 的实现中,我尝试调用 CallService()。这会导致 InvalidOperationException:
附加信息:此操作将死锁,因为在当前消息完成处理之前无法收到回复。如果要允许无序消息处理,请在 CallbackBehaviorAttribute 上指定 Reentrant 或 Multiple 的 ConcurrencyMode。
我的服务的 ServiceBehavior 设置如下:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Multiple, UseSynchronizationContext=false)]
我的回调有 CallbackBehavior 为:
[CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext=false)]
什么可能导致此异常?我也尝试过使用 ConcurrencyMode.Reentrant,但这没有帮助。我可以通过在工作线程上调用 CallService() 来解决问题,但我仍然想知道是什么导致了异常。
谢谢。
编辑:添加了 [OperationContract(IsOneWay = true)],但问题仍然存在。