第二个 WCF 轮询双工服务调用太长



我对WCF服务有奇怪的问题。我使用轮询DuplexBinding和Silverlight客户端。绑定由此代码在 web.config 中注册

<bindingElementExtensions>
   <add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexElement, System.ServiceModel.PollingDuplex" />
</bindingElementExtensions>

第一次调用时一切正常 - 服务快速返回数据。但第二次调用执行超过 5 个 mitutes。如果我设置了很大的超时,结果将返回给客户端,否则它会抛出超时异常。我调用的 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);

我有同样的问题,我用这种方式解决它:

只需在 web.config 文件中将 aspNetCompatibility Enabled="false" 设置为 false

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

或在 web.config 中设置 sessionState 模式="Off"

<system.web>
    <sessionState mode="Off" />
</system.web>

以这两种方式,我的问题都会解决...

相关内容

  • 没有找到相关文章

最新更新