如何为长时间运行的WCF服务请求实现Keep Alive机制?

时间:2015-07-03 07:48:41

标签: c# wcf http iis-7.5 firewall

最近,我们使用基本的http绑定(在IIS中托管)将我们现有的一个Web服务迁移到WCF服务。问题是每当用户向服务发送长时间运行的请求(> 5分钟)时,客户端一直等待服务器响应,直到手动关闭它。在分析了Wireshark和防火墙日志后,我们找到了原因,防火墙默认的HTTP会话超时设置为300秒,因为此防火墙在5分钟后从表中删除了长时间运行的会话。

我们可以通过增加防火墙中的HTTP会话超时来解决这个问题,但复杂性是我们可以在服务器端防火墙控制它,但我们无法控制客户端(每个客户端将有不同的ISP和IT策略)。所以我的网络管理员建议实现保持活动机制(向服务器发送心跳消息),但它对我没用。

我在实现keep-alive机制时尝试了一些事情,

  • 首先,我尝试使用相同的频道向服务器发送echo消息 这是为长时间运行的请求创建的,但是因为它已经失败了 渠道已经在等待回复。
  • 然后我尝试每隔4分钟向服务器发送一条echo消息 单独的渠道,但由于它使用,对问题没有影响 全新的联系。
  • 我尝试使用异步服务调用模式,但没有任何影响。
  • 最后,我尝试添加Keep-Alive(Keep-Alive:max = 100, timeout = 1801)客户端和客户端的每个请求和响应的标头 服务器端再次对此问题没有影响。

那么,你能帮我解决这个问题吗?

0 个答案:

没有答案