我对 WCF 服务有奇怪的问题。我使用 pollingDuplexBinding 和 Silverlight 客户端。此代码在 web.config 中注册了绑定
<bindingElementExtensions>
<add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexElement, System.ServiceModel.PollingDuplex" />
</bindingElementExtensions>
在第一次调用时一切正常 - 服务快速返回数据。但是第二次调用执行超过 5 次。如果我设置了大超时,结果将返回给客户端,否则它会抛出 TimeoutException。我正在调用的 WCF 方法什么都不做 - 只返回短字符串。
WCF 跟踪说,第二个服务调用仅比客户端调用此方法晚 5 分钟,并且执行速度很快。我使用这些服务属性:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
这是客户端代码
var binding = new PollingDuplexHttpBinding(PollingDuplexMode.SingleMessagePerPoll);
var address = new EndpointAddress("/SportService.svc");
_proxy = new SportDuplexClient(binding, address);