无法向会话状态服务器发出会话状态请求

Posted

技术标签:

【中文标题】无法向会话状态服务器发出会话状态请求【英文标题】:Unable to make the session state request to the session state server 【发布时间】:2010-11-25 11:47:45 【问题描述】:

我们的网站目前存在此问题。基本上,只有当我们单击某些特定链接时才会发生这种情况,它会弹出一个新窗口。 这是我们收到的错误消息:

。 请确保 ASP.NET 状态服务已启动并且 客户端和服务器端口相同。 如果服务器在 远程机器,请确保它接受远程请求 检查值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection。 如果服务器在本地机器上,并且如果之前 提到注册表值不存在或设置为0,则状态 服务器连接字符串必须使用“localhost”或“127.0.0.1”作为 服务器名称。 目标站点: 无效 MakeRequest(StateProtocolVerb,System.String,StateProtocolExclusive, Int32,Int32,Int32,字节 [],Int32,Int32,SessionNDMakeRequestResults 参考)

这是包含 sessionstate 标记的 webconfig:

<sessionState mode="StateServer" timeout="45" />

我检查了 ASP.NET 状态服务,它当前已启动并设置为自动

我已将错误消息中所述的注册表设置为 1,但仍然无法正常工作。

【问题讨论】:

【参考方案1】:
    开始->管理工具->服务 右键单击ASP.NET State Service,然后单击“开始”

此外,您可以将服务设置为自动,以便在重新启动后运行

【讨论】:

有时我发现它只有在重新启动 ASP.NET 状态服务几次后才有效! 工作就像我的魅力 确切名称是aspnet_state 你的我的英雄...找了很久。 您为我节省了时间...移动每个人的时间...并且您通过这个简单的解决方案到达...真的...谢谢【参考方案2】:

如果您需要将 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 更改为 1,请记住在更改后重新启动 ASP.net state服务参数。

【讨论】:

@hikkenmikke 如何检查和更改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 按Windows+R,然后输入“regedit”,会打开Windows注册表编辑器。您可以搜索“aspnet_state”键或在层次结构中导航(在左侧面板上)以找到正确的键【参考方案3】:

检查:

stateConnectionString="tcpip=server:port"

是正确的。另请检查默认端口 (42424) 是否可用,并且您的系统没有 firewall 阻止系统上的端口

【讨论】:

我有同样的问题,验证我的会话状态服务运行正常,但仍然收到相同的消息。这是我的 web.config 设置: 【参考方案4】:

在 windows 运行窗口的运行面板中键入 Services.msc。它将列出我们系统中的所有 Windows 服务。现在我们需要启动 Asp .net 状态服务,如图所示。

您的问题将得到解决。

【讨论】:

由于 Windows 更新,我在重新启动后收到此错误。我按照这些步骤操作,它奏效了。谢谢。【参考方案5】:

我的一个客户也面临同样的问题。采取以下步骤来解决此问题。

 (1) Open Run. 

 (2) Type Services.msc

 (3) Select ASP.NET State Service

 (4) Right Click and Start it.

【讨论】:

【参考方案6】:

要检查的另一件事是您是否启用了 Windows 防火墙,因为这可能会阻塞端口 42424。

【讨论】:

【参考方案7】:

当某些 ASP.NET 安装损坏时,我遇到了同样的问题。在这种情况下,他们建议running aspnet_regiis -i -enable

【讨论】:

在正确的 asp.net 版本上。就我而言,它是 2【参考方案8】:

我发现一些开发人员会出于某种原因在 IIS 之外的意外位置定义服务器的私有 IP,例如非标准配置文件(即不是 web.config)或文本文件。这可能会导致内部操作失败,即使在服务启动、端口没有被阻塞、注册表项正确等情况下。

Kaseya 尤其将一个名为 serveripinternal.txt 的文件放置在 VSA 服务器的 IIS 根目录中。当有人运行自己的 Kaseya 实例更改服务器的内部 IP 时,我已经看到了您的错误文本。服务器将可访问,IIS 将响应,并且登录页面将出现 - 但登录将失败并显示引用的消息。

【讨论】:

【参考方案9】:

我最近遇到了这个问题,提出的解决方案都没有解决它。这个问题原来是过度使用存储在会话中的数据集。代码中存在导致会话大小增加 10 倍的缺陷。

msdn 博客上有一篇文章也谈到了这一点。 http://blogs.msdn.com/b/johan/archive/2006/11/20/sessionstate-performance.aspx

我使用了一个函数来编写自定义跟踪消息来测量实时站点上会话数据的大小。

【讨论】:

【参考方案10】:

不是最好的答案,但无论如何它是一个选择:

在 web.config 中注释给定的行。

【讨论】:

绝对不是最佳答案,但我在不允许我启动服务的锁定环境中进行本地调试时遇到上述错误。删除 mode="StateServer" 允许我继续调试并解决了我的错误。

以上是关于无法向会话状态服务器发出会话状态请求的主要内容,如果未能解决你的问题,请参考以下文章

无法向会话状态服务器发出会话状态请求

无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

Django组件:cookie 和 session

7Servlet会话跟踪

会话跟踪技术

JavaWeb:会话与状态管理