我们在虚拟机上托管ASP.net网站。 ASP.net会话状态服务正在运行。但是,我们每隔一段时间就得到以下异常:
消息:无法将会话状态请求发送到会话状态 服务器。请确保已启动ASP.NET状态服务 客户端和服务器端口是相同的。如果服务器在 远程机器,请确保它接受远程请求 检查的价值 HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ aspnet_state \参数\ AllowRemoteConnection。 如果服务器在本地计算机上,如果之前提到过 注册表值不存在或设置为0,然后是状态服务器 连接字符串必须使用'localhost'或'127.0.0.1'作为 服务器名称。
我已经验证会话状态服务正在运行,并且它正在尝试连接到本地主机:
<sessionState mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424" timeout="100"/>
在我的研究中,我发现了以下论坛帖子: http://forums.asp.net/t/1409990.aspx
但除了尝试在SQL模式下运行会话状态外,没有任何关于此问题的解决方案。
TL; DR:获取会话状态服务错误,说明服务没有响应,即使该服务在同一台计算机上运行。
答案 0 :(得分:3)
经过大量的调试后,我发现我们的一位开发人员试图通过将其保存到两个特定页面的会话中来改善视图状态性能。当用户达到大约20个不同的视图状态集时,会话服务变得过载,并开始剥落。
我已将页面修改为不再需要视图状态,并且未发生此异常。
答案 1 :(得分:2)
检查会话状态提供程序可执行文件路径是否设置正确,尝试不同的路径(从.NET 2.0到4.0,反之亦然)。上周我们使用Microsoft更新修补了我们的服务器,其中一个副作用是将ASP.NET会话状态服务的可执行文件从C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_state.exe
静默更改为C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_state.exe
,我们也有这样的错误。您可以在Windows服务控制台中进行检查。