我们有一个Silverlight客户端,它在Mac上运行“浏览器外”。此客户端通过轮询双工绑定来使用WCF服务。
在客户端中,我正在侦听由System.ServiceModel.DuplexClientBase派生的“InnerChannel”属性公开的“Faulted”事件,该派生代表客户端的服务。
在一分钟之后,这个“故障”事件被触发,之后频道不再工作,即当服务器尝试通过回调通道发送消息时,它会收到超时异常。
这是我的理论:我怀疑客户端中的基础轮询操作超时为1分钟。在服务器端,pollingDuplexHttpBinding部分的serverPollTimeout属性设置为超过一分钟。这意味着如果在此期间没有任何内容告知客户端,服务器将持有超过一分钟的轮询请求。我怀疑这在客户端轮询消息中显示为超时。为了测试我的理论,我将serverPollTimeout设置减少到不到一分钟,确实 - 问题没有显示出来。
在客户端,有PollingDuplexBindingElement.ClientPollTimeout属性,根据this博客确切地说应该告诉客户等待超过一分钟的设置。此设置的默认值为5分钟,我甚至已明确设置 - 但问题仍然存在(没有上述解决方法)。
请注意,此问题仅在Mac浏览器客户端上发生。
总结一下,这是我的问题:
答案 0 :(得分:0)
在与Microsoft支持有关此问题的长篇大论之后,有关于此问题的结论是: