ASP.NET State Service出错

分类:技术备忘 阅读:11445 评论:4
两台WEB服务器,操作系统为Windows2003,IIS 6.0,安装了.NET 2.0,运行的程序相同,相互为负载均衡。

其中一台在进入某个系统功能页面是否会提示错误,提示:

[HttpException : 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service,并且客户端和服务器端口是相同的。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求。]


此应用程序是使用了ASPState服务作为会话管理的,在web.config中配置
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
cookieless="false"
timeout="3600"
/>


常规都会认为是ASPState服务没开,但是其他页面都工作正常,检查服务也是启动了的,重启IIS、ASPState、服务器均无法解决。检查系统日志由如下出错信息:
事件类型: 错误
事件来源: ASP.NET 2.0.50727.0
事件种类: 无
事件 ID: 1074
日期: 2008-2-27
事件: 18:36:41
用户: N/A
计算机: XXXX
描述:
An error occurred in while processing a request in state server. Major callstack: ProcessCompletion-->ProcessReading-->Tracker::Read. Error code: 0x80072747



看起来是连接成功了ASPState服务的,但是服务出错,搜索错误代码0x80072747,提示:
WSAENOBUFS (0x80072747)
No buffer space available.
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.


貌似内存管理的问题,Google出来的信息非常有限,有4-5个有相同问题,但是均没有答案。完全没有头绪了。想了很久,折腾了很久,突然想到boot.ini中开启了/3GB开关:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3GB


将/3GB开关去掉,重启,恢复~~!怀疑是ASPState在大内存管理下有BUG造成。

天才呀,这个都能想到,其实还是运气好。下班,咔咔。

已有4位网友发表了看法:

CCPN 2008-02-28 11:03:16 回复
呵呵,感觉真是到位了,厉害厉害。
无为而为 2008-02-28 21:04:56 回复
感觉就是经验,经验就是感觉,呵呵
黑咖啡 2008-02-28 09:29:32 回复
zanzanzanzan
无为而为 2008-02-28 21:05:08 回复
grin
Vin 2008-02-27 23:41:18 回复
真是牛人啊!!
无为而为 2008-02-27 23:56:31 回复
grin
WWT 2008-02-27 23:33:30 回复
不错不错!!!
zanzanzan
无为而为 2008-02-27 23:56:23 回复
grin

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。