状态服务器记录事件 ID 1072 或事件 ID 1076

本文可帮助你解决状态服务器上日志事件 ID 1072 或 1076 的问题。

原始产品版本:Microsoft .NET Framework
原始 KB 编号: 308097

症状

在 ASP.NET 中使用会话状态的状态服务器模式时,以下事件之一显示在状态服务器计算机的应用程序事件日志中。 当 Web 服务器或运行状态服务器的计算机承受较高压力时,就会发生这种情况。

事件类型:错误
事件源:ASP.NET 1.0.3306.0
事件类别:无
事件 ID:1072
日期:2001/9/12
时间:下午 4:00:25
用户: N/A
计算机: ComputerName
说明:
在状态服务器中处理请求时出错。 主调用堆栈:EndOfRequest。 错误代码:0x80072746

注意

上一事件消息中提到的.NET Framework版本是 .NET Framework 1.0 的预发行版本。

事件类型:错误
事件源:ASP.NET 1.0.3306.0
事件类别:无
事件 ID:1076
日期:2001/9/12
时间:下午4:02:05
用户: N/A
计算机: ComputerName
说明:
状态服务器已关闭过期的 TCP/IP 连接。 客户端的 IP 地址为 127.0.0.1。 过期的读取操作开始于 09/12/2001 16:02:00。

注意

上一事件消息中提到的.NET Framework版本是 .NET Framework 1.0 的预发行版本。

事件类型:错误
事件源:ASP.NET 1.1.4322.0
事件类别:无
事件 ID:1078
日期:2005/10/6
时间:上午11:03:47
用户:不适用
计算机: ComputerName
状态服务器已关闭过期的 TCP/IP 连接。 客户端的 IP 地址为 127.0.0.1。 过期的读取操作开始于 2005 年 10 月 6 日 11:03:25。

原因

在 ASP.NET 中使用会话状态的状态服务器模式时,Web 服务器中的 ASP.NET Web 服务器进程使用 WinSocket 通过传输控制协议/Internet 协议 (TCP/IP) 与状态服务器通信。 默认情况下,Web 服务器进程将所有发送和接收 TCP/IP 操作的超时值设置为 10 秒。 同样,状态服务器还会在 10 秒后超时所有发送和接收 TCP/IP 操作。

但是,如果 Web 服务器或状态服务器的 CPU 使用率 (接近 100%) ,则 TCP/IP 操作可能需要 10 秒以上,因此在完成之前会取消。 因此,将记录上述事件之一,并且发起的客户端请求失败。 如果 ASP.NET Web 服务器进程超时 TCP/IP 操作,则状态服务器将记录事件 ID 1072。 如果状态服务器超时 TCP/IP 操作,则状态服务器记录事件 ID 1076。

解决方案

若要修改 ASP.NET Web 服务器进程的 TCP/IP 操作超时值,请更改 Machine.config 文件中的以下属性 (,或者在 Web.config 文件中为任何 Web 应用程序) 指定以下属性。

 <sessionState
    stateNetworkTimeout="10"
 />

下面介绍如何修改状态服务器的 TCP/IP 操作超时值:

  1. 停止 ASP.NET 状态服务器服务。
  2. 依次选择“开始”、“运行”、“Regedt32.exe”,然后选择“确定”以启动“注册表编辑器”。
  3. 在注册表中找到以下项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameter
  4. 添加名为 SocketTimeout 的 DWORD 值。 设置一个正整数以表示新的 TCP/IP 超时(以秒为单位)。
  5. 退出注册表编辑器。
  6. 重启 ASP.NET 状态服务器服务。

对于遇到 症状 部分中提到的问题的用户,请使用这些方法将状态服务器和所有 Web 服务器上的超时值增加到 20 秒。

注意

如果在增加 Web 服务器上的超时值时状态服务器未运行,则客户端请求在 n 秒后超时,其中 n 等于新的超时值,而不是默认的 10 秒。