我有一个特殊的问题,客户端请求随机没有得到对 WCF 服务调用的响应。
设置是一个 Silverlight 5 应用程序调用 WCF 服务,使用 HTTP 和 PollingDuplex 绑定。SL 在加载时发出许多请求(20 秒内 20+),并且时不时地没有收到对其中一个或两个的响应。需要明确的是,完全相同的请求在 90% 的时间内都有效,如果我刷新页面,所有请求都可以得到响应。
错误不能是实际发送的请求。我也使用 Fiddler 来验证这一点,因为我看到了正在发出的请求(确保内容与之前成功的请求相同),但对请求没有响应。最终客户端超时请求。WCF 服务托管在 IIS7 中,并且我在两者上都启用了诊断和日志记录。在 WCF 服务器跟踪日志中,我只看到客户端请求超时时记录的消息。在客户端超时时,它在“处理消息”活动下记录了以下异常操作:“可用字节数与 HTTP Content-Length 标头不一致。可能存在网络错误或客户端可能正在发送无效请求。” 这就好像 HTTP 的主体没有通过 WCF(我不知道是否可以在传递给 WCF 处理程序之前记录 IIS 接收到的完整请求?)。正如我所说,使用 Fiddler 我可以看到完整的消息是有效的(请注意,当 Fiddler 没有嗅探流量时也会发生这种行为,所以我已经排除了 Fiddler 的问题)。
通常,“处理消息”活动具有“收件人:处理操作xxx ”
就像我说的,这发生在 Http 和 PollingDuplex 服务上,在我的开发盒以及生产 Web 服务器上。也发生在不同的端点上,我认为它与 WCF 节流行为无关,因为它发生了
任何信息或帮助将不胜感激,无论是我可以收集以帮助诊断的其他信息还是任何提示。