在ASP.NET C#中丢失会话

时间:2010-09-29 19:14:32

标签: asp.net session

我遇到了在我的网站上丢失会话变量的问题。它随机附加,因此没有特定的行为导致这种情况。会议失败的原因是什么?

我已经在这个网站上随处可读,我可以将我的会话置于“sql server”模式,所以一切都写在服务器上,这可以解决吗?

我的服务器在1and1共享主机上,这可能是他们的错吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

与托管服务提供商核实您的应用程序未托管在负载平衡服务器上。如果服务器正在进行负载平衡,则当负载均衡器将其请求发送到另一台服务器时,您的用户将丢失其会话状态信息。会话状态模式属性有3种设置: InProc - 将状态信息本地存储在发出请求的服务器上(仅当应用程序在非负载平衡环境中托管在单个服务器上时才有效) StateServer - 允许特殊配置的服务器托管整个Web场的状态信息(我相信StateServer开始在.NET Framework v2.0上提供)。 SqlServer - 允许特殊配置的SQL Server实例存储Web场的会话信息 [此信息在网络园林场景中会略有不同。]

有关会话状态的详细信息,请参阅MSDN

这可以根据它们的负载平衡设置(想想:粘性负载平衡)非常随机地发生,并且可以一次工作几分钟并且几乎立即失败。

另一种可能性是web.config中sessionstate设置的timeout属性设置为一个较低的值(以分钟为单位),会话即将到期。