2

总而言之,我有一个网站,它使用经典的 ASP 和水晶报告根据用户对网页的输入(查询后端数据库)生成报告。如果报告运行时间超过 30 分钟,则位于客户端和 Web 服务器之间的防火墙会在连接处于空闲状态时断开连接,因此报告永远不会显示给用户。为了避免这种情况,我需要使用某种保持活动状态,HTTP 或 TCP。

IIS 6 上 Windows 2000 中的 Web 服务器。我在 Windows 中为 TCP keepalive 创建了注册表项(并禁用了网卡中的 TCP 卸载功能,我听说这会导致问题),但是 IIS 似乎没有默认情况下使用它。我确实在服务器上下载并测试了一个名为 TCP/IP Builder (www.drk.com.ar) 的套接字测试器,它允许您打开和关闭工作正常的 keepalive,因此我知道服务器可以发送它们。

有谁知道如何强制 IIS 使用 TCP Keepalives,因为我假设它必须为 IIS“启用”?

谢谢!

4

2 回答 2

4

它不是 IIS 设置,而是系统范围的操作系统设置,默认情况下它设置为高得离谱的 2 小时(基于 1989 年 TCP 规范:https ://www.rfc-editor.org/rfc/rfc1122#page-101 )!但是您可以将注册表中的 KeepAliveTime 更改为更实用的时间(对于今天的通讯 - 因为您在此之前发现了超时方式),方法如下(来自: http: //support.microsoft.com/kb/120642):

在:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Tcpip\Parameters 适配器名称\Parameters\Tcpip

使用注册表编辑器配置的可选参数 这些参数通常不存在于注册表中。可以创建它们来修改 TCP/IP 协议驱动程序的默认行为。

KeepAliveTime 项 :Tcpip\Parameters 值类型:REG_DWORD - 以毫秒为单位的时间 有效范围:1 - 0xFFFFFFFF 默认值:7,200,000(两小时) 描述:该参数控制 TCP 尝试通过发送保持活动状态来验证空闲连接是否仍然完好的频率包。如果远程系统仍然可以访问并且正常运行,它将确认保持活动传输。默认情况下不发送保持活动数据包。此功能可以通过应用程序在连接上启用。

至于使用什么价值,我仍在尝试找出自己(通过 Internet 保持 TCP/IP 连接的套接字 - 何时?如何?以及多少?)但听起来你想要的东西少于你已知的 30 分钟(我顺便说一句,认为很长)。

于 2010-10-12T02:39:15.230 回答
0

这是“任一个”,HTTP 之一:启用 HTTP Keep-Alives (IIS 6.0)

于 2009-08-14T09:19:26.303 回答