我遇到了奇怪的行为,我的 wcf wshttp 服务完成了数据处理(我知道是因为我在返回人员列表之前记录了一条消息)但客户端没有收到响应并坐在那里“挂起”。我将超时时间增加到 2 小时,即使服务在 20 分钟后完成检索数据,客户端也会在达到超时限制并收到超时异常之前挂起 2 小时。您可能已经猜到了,我从服务中返回了大量数据(大约 5 万个复杂对象)。我想要序列化的所有内容都有 [DataContract] 属性。
我已经完成的故障排除:
在我们的测试环境中,该服务似乎每次都能正常工作,并在 20 分钟后返回。
我们的生产服务器随机遇到上述问题。有时它会在 20 分钟后返回,有时客户端会在服务实际完成一小时 40 分钟后收到超时错误。
我启用了 wcf 跟踪,它跟踪的最后一件事是 Close ClientBase 语句。这是我在从方法返回之前做的最后一件事(除了之后的日志语句)。
我将大多数配置设置设置为它们的最大值以处理返回的大型数据集。
这是服务器/网络问题吗?我可以采取任何其他步骤来追踪此问题吗?
该服务托管在 IIS7 Windows Server 2008 R2 中。使用 .net 框架 4.5.2。