标签: stateserver

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

我们的网站目前有这个问题.基本上它只发生在我们点击某个特定链接时会弹出一个新窗口.
这是我们收到的错误消息:

无法向会话状态服务器发出会话状态请求.
请确保已启动ASP.NET状态服务,并且客户端和服务器端口是相同的.
如果服务器位于远程计算机上,请通过检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection的值来确保它接受远程请求.
如果服务器位于本地计算机上,并且前面提到的注册表值不存在或设置为0,则状态服务器连接字符串必须使用"localhost"或"127.0.0.1"作为服务器名称.

目标站点:
Void MakeRequest(StateProtocolVerb,System.String,StateProtocolExclusive,Int32,Int32,Int32,Byte [],Int32,Int32,SessionNDMakeRequestResults ByRef)

这是包含sessionstate标记的webconfig:

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

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

我已将错误消息中指定的注册表设置为1,但仍无法正常工作.

asp.net stateserver session-state

109
推荐指数
5
解决办法
12万
查看次数

SQLServer与StateServer for ASP.NET会话状态性能

我正在学习MS认证,我正在做的一个练习测试有一个问题,争论点是在SQL Server中存储会话而不是StateServer之间的性能.

鉴于应用程序在Web场中运行,会话状态的哪个解决方案可以提供最佳性能(SQL Server或StateServer),最重要的是,为什么?

sql-server asp.net performance session stateserver

35
推荐指数
4
解决办法
4万
查看次数

使用ASP.NET会话状态服务器(而不是InProc)的优点和缺点?

在我开始使用会话状态服务器之前,为了使我的应用程序中的会话状态比InProc状态更强大,我想找到一个优点和缺点列表进行评估.

更新1:还有关于幸存的应用程序池回收?

更新2:会话的长寿及其结局如何?

asp.net session stateserver session-state

23
推荐指数
3
解决办法
3万
查看次数

使用StateServer的ASP.NET会话混合(SCARY!)

我们在会话中存储两个对象.不知何故,来自另一个用户的一个对象被加载到另一个用户的会话中.用户应该无法访问这些特定数据,一旦他们看到它就知道出现了一些非常错误的信息.

我们对他提供的数据有视觉证据,除非会议混淆,否则肯定没有办法发生.这是一个非常可怕的情况,我们无法弄清楚(我们无法重现它).我们唯一的答案是责怪ASP.NET StateServer混合会话变量,这是完全不可接受的,并使我们处于不利地位.

我们的应用程序是使用StateServer cookieless="false"会话模式和FormsAuthentication 在带有IIS6的Windows Server 2003上运行的ASP.NET 2.0应用程序.

还有其他人有这个问题吗?我们怎么解决呢?

asp.net security session iis-6 stateserver

18
推荐指数
2
解决办法
9037
查看次数

ASP.NET会话状态性能基准

我发现了许多比较InProc,StateServer和SQLServer for ASP.NET状态管理的好信息,但我似乎无法找到任何性能基准比较.很明显,InProc比StateServer更快,而StateServer又比SQLServer快,但目前尚不清楚速度有多快.我意识到它会因应用程序和环境而有很大差异,但是对它们的比较有一个相对的想法是有价值的.

您知道可以分享的任何基准吗?或者对此有任何亲身经历?谢谢!

sql-server asp.net session stateserver session-state

12
推荐指数
2
解决办法
5337
查看次数

为什么我不能在两个使用StateServer的Web应用程序之间共享会话状态?我错过了什么?

我无法使用Session StateServer获得两个相同的ASP.NET MVC应用程序来共享同一个Session.我试图这样做的原因是我们最终将在3个需要共享相同状态的Web服务器上部署此应用程序.我们需要使用StateServer,因为我们正在尝试最小化数据库对非数据相关存储的使用.

设置:

我已经将相同的代码库部署到http:// localhost/App1http:// localhost/App2

两者都具有相同的Web.Config文件,具有以下内容:

<system.web>
<sessionState mode="StateServer" 
              cookieless="false" 
              timeout="20" 
              stateConnectionString="tcpip=127.0.0.1:42424" />
              //stateConnectionString="tcpip=192.168.1.52:42424" /> // also doesn't work
<machineKey 
  validationKey="8B9F68D0CC730F6F046D0173021C34B1A0D9A01C21D8E4D4A7A1DFF38332DEE8CBBAFEA503C18776614EE9D4F7EEA7E5D2D5571630547D822485A27B1EF53AC1"
  decryptionKey="60009563EFCFC594FD1BC46684943AA398EE70412A624B2EB488BBB071F15ECF"
  validation="SHA1" decryption="AES" />
Run Code Online (Sandbox Code Playgroud)

我用这个工具生成这些机器密钥

考试:

我将以下内容放入我的一个控制器中以测试它是否正常工作:

ViewData["mode"] = requestContext.HttpContext.Session.Mode.ToString();

string timestamp = DateTime.Now.ToString();
if (requestContext.HttpContext.Session["timestamp"] == null)
{
    requestContext.HttpContext.Session["timestamp"] = timestamp;
}

ViewData["timestamp"] = requestContext.HttpContext.Session["timestamp"].ToString();
ViewData["realtime"] = timestamp;
Run Code Online (Sandbox Code Playgroud)

在视图中有这个:

<p>
    Mode: <%= ViewData["mode"].ToString() %>
</p>
<p>
    Time: <%= ViewData["timestamp"].ToString() %>
</p>
<p>
    real time: <%= ViewData["realtime"].ToString() %>
</p>
Run Code Online (Sandbox Code Playgroud)

结果:

对于这两个部署,当页面首次加载时,我可以看到模式是StateServer,时间戳设置为与实时值相同的时间.但是,如果这是有效的,只有第一页应该具有相同的时间实时价值.第二个页面加载应该从StateServer读取,因为该时间戳值不再为null,并显示该时间值.但相反,它再次显示实时价值. …

c# asp.net asp.net-mvc session stateserver

11
推荐指数
2
解决办法
2万
查看次数

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

我正在尝试使用State Server会话.

我已将会话状态更改为以下内容:

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20" />
Run Code Online (Sandbox Code Playgroud)

从本地主机运行我的网站,一切正常.

但是,当我发布我的网站并尝试在线运行时,我收到以下错误:

无法向会话状态服务器发出会话状态请求.请确保已启动ASP.NET状态服务,并且客户端和服务器端口是相同的.如果服务器位于远程计算机上,请通过检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection的值来确保它接受远程请求.如果服务器位于本地计算机上,并且前面提到的注册表值不存在或设置为0,则状态服务器连接字符串必须使用"localhost"或"127.0.0.1"作为服务器名称.

该网站托管在Afrihost服务器上,在重新分析错误后我发现它可能是因为ASP.NET状态服务尚未启动.有没有办法可以检查Afrihost服务器是运行此服务还是远程启动它?

另外我知道IP地址127.0.0.1适用于本地主机,但是因为您在Web服务器上发布应用程序,所以它成为本地机器是正确的.

asp.net session web-hosting stateserver

10
推荐指数
1
解决办法
2万
查看次数

如何在ASP.NET中的多个Web应用程序中维护相同的会话ID

我在IIS上的不同虚拟目录上设置了两个相同的应用程序(我已经做了一些解决方法以确保它们都具有相同的应用程序名称).有没有办法在两个asp.net Web应用程序之间共享会话ID?

由于我将会话存储在StateServer中,因此它们都应该获得相同的会话数据,但是,每次从应用程序a到应用程序b时,都会创建不同的会话ID.这也不会在负载平衡场景中发生吗?当我去www.test.com时,它会将该请求重定向到服务器a,然后如果我再次点击它,它将转到服务器b,但由于它是一个不同的Web应用程序,它将创建一个新的会话ID ?

asp.net stateserver session-state sessionid

7
推荐指数
1
解决办法
2万
查看次数

自定义会话状态模块 - 使用ASP状态服务

编辑(澄清我的问题):我们可以使用我们自己的代码使用Out Of Process Asp.NET状态服务的API或方法,还是专有的?

我们正在研究实现一个自定义会话状态模块,该模块重用了asp提供的模块组件.我们的主要目标是阻止会话锁定(不将会话状态模式更改为ReadOnly).这可能吗?

我们希望使用的关键部分之一是能够使用.NET内部使用的相同的Out of Proc会话存储提供程序(ASP状态服务),因为我们有一个负载均衡的环境,它不会使用粘性会话.

我已经在参考源中挖掘了代码,我的发现如下.我希望有人有一个不同的实用程序,可能会用于集成ASP状态服务的自定义会话状态模块.


默认会话模块是System.Web.SessionState.SessionStateModule.这是一Sealed堂课.此类似乎是唯一使用SessionStateMode.StateServer枚举值的类(在Web配置中指定).

设置此标志后,模块将_store变量设置为新类System.Web.SessionState.OutOfProcSessionStateStore,即Friend Sealed类.

我最初对如何做到这一点有一些想法,并且由于上面类的修饰符,我无法做到这些.还有其他方法可以采取吗?

  1. 实例化一个新的System.Web.SessionState.SessionStateModule并引用该_store变量.这不起作用,显然是因为_store变量是私有的.
  2. 我尝试创建一个继承自的类,System.Web.SessionState.SessionStateModule但很明显,因为它sealed不起作用.
  3. 看着从.NET框架代码中复制代码.意识到这将是一个非常糟糕的决定.

我有什么选择吗?

asp.net session stateserver

7
推荐指数
1
解决办法
555
查看次数

ASP .NET中的会话管理

刚刚对ASP .NET中的会话管理提出了疑问.我已经查看了IIS(InProc,StateServer和SQL Server)中的3个选项,并且遇到了跨多个服务器和多个Web应用程序部署会话持久性的问题.是否有其他可用于管理会话跨子域(来自同一父级)以及每个域下的多个Web应用程序的选项?

我举个例子:想象一个网站www.thisismysite.com.au.当我登录时,我去login.thisismysite.com.au.虽然浏览网站,但请访问www.thisismysite.com.au/MyWebApp/.我想要实现的是会话在所有三个链接中持续存在.我知道有一个第三方工具可以做到这一点,Groat SessionFarm,但我想知道是否有其他人在那里?此外,如果存在任何差异,则存在SSL /非SSL的混合.

注意:我不担心身份,我可以实现Windows Identity Foundation(或类似)并在所有三个地方发送声明.我是在会议持久性之后.

谢谢堆,李

编辑: 我最终得到了第三方代码,我们可以为我们的目的定制.工作完美,在购买源代码时,我们可以根据需要更新它.

asp.net session stateserver

6
推荐指数
1
解决办法
4543
查看次数

突然得到"无法向会话状态服务器发出会话状态请求"

设置:2个Web服务器和一个单独的状态服务器

我有两个负载平衡配置的生产Web服务器.他们在web.configs中使用此行主持共享状态的ASP.NET Web应用程序(如Web场):

<sessionState mode="StateServer" stateConnectionString="tcpip=9.9.9.9:42424" cookieless="false" timeout="60"/>
Run Code Online (Sandbox Code Playgroud)

9.9.9.9是asp.net会话状态服务运行的机器的IP(确实它不是9.9.9.9,改为保护无辜者).它是第三台机器(实际上是数据库服务器).

它工作正常,直到......

错误:网站下来!

突然,该网站出现故障,只显示一个通用的asp.net错误页面('关闭自定义错误以查看此错误'或其他).

应用程序的日志记录了实际的错误消息:

发生未处理的异常无法向会话状态服务器发出会话状态请求.请确保已启动ASP.NET状态服务,并且客户端和服务器端口是相同的.如果服务器位于远程计算机上,请通过检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection的值来确保它接受远程请求.如果服务器位于本地计算机上,并且前面提到的注册表值不存在或设置为0,则状态服务器连接字符串必须使用"localhost"或"127.0.0.1"作为服务器名称.

因此,似乎Web应用程序无法联系状态服务器(9.9.9.9).

我"尝试转动如果auf然后onnegen" - 重新启动状态服务器修复了问题.

为什么?

我真的想知道发生了什么,为什么我可以防止它再次发生.

到目前为止我只有两个理论:

  1. 对.net框架4的Windows更新在该状态服务器上应用了.那么也许更新对asp.net状态服务做了些什么?Windows事件查看器显示.net 4已经记录了一个警告:

    IIS元数据库的更新已中止,因为未在此计算机上安装或禁用IIS.要将ASP.NET配置为在IIS中运行,请安装或启用IIS并使用aspnet_regiis.exe/i重新注册ASP.NET.

  2. 生产网站和状态服务器之间存在某种临时网络问题?它们确实位于同一个物理机架中.

  3. ??? 任何其他想法,任何人?

有人以前见过这个,或者能够纠正我的任何事情吗?

asp.net windows-update stateserver session-state

5
推荐指数
1
解决办法
1万
查看次数

如何在使用StateServer时查找活动用户数

当您使用StateServer时,如何找出活动用户的数量?还可以查询StateServer并检索会话状态中的内容吗?

我知道如果你使用SqlServer作为后备存储,这是可能的,但我希望它们在内存中.

asp.net stateserver

4
推荐指数
1
解决办法
3059
查看次数