我的情况是我使用 wsDualHttpBinding 作为绑定。
但我注意到了一些意想不到的事情。当我尝试向服务操作发送请求时,但我的代码正在处理回调消息(我已经在那里放置了一个 Thread.Sleep 来模拟),然后服务调用会卡住(甚至可能会超时)直到回调消息被完全处理。他们不应该是独立的,还是通道一次只能处理一条消息,不管是服务请求还是回调消息?我一直在使用同一个频道,要么接收回调消息,要么发送新请求。此应用程序作为服务运行,因此不涉及 UI。
我的情况是我使用 wsDualHttpBinding 作为绑定。
但我注意到了一些意想不到的事情。当我尝试向服务操作发送请求时,但我的代码正在处理回调消息(我已经在那里放置了一个 Thread.Sleep 来模拟),然后服务调用会卡住(甚至可能会超时)直到回调消息被完全处理。他们不应该是独立的,还是通道一次只能处理一条消息,不管是服务请求还是回调消息?我一直在使用同一个频道,要么接收回调消息,要么发送新请求。此应用程序作为服务运行,因此不涉及 UI。
尝试
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
在单线程配置中支持回调是一种特殊模式。
http://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode.aspx