2010-09-29 74 views
0

我遇到了在我的网站上丢失会话变量的问题。它随机附加,所以没有特殊的行为导致这种情况。这次会议的原因是什么造成的?在ASP.NET C中丢失会话#

我读过到处都在这个网站,我可以把我的会议“SQL服务器”模式,因此一切都在服务器上写的,它可以是一个解决办法?

我的服务器上的1and1共享主机,也可以是他们的错?

谢谢!

+1

什么版本的IIS?什么版本的.NET?你说什么样的时间差异 - 秒/分钟/小时/天? – Oded 2010-09-29 19:15:49

+0

不知道ISS的版本,因为它不是我控制它的版本。 .Net版本3.5。有人浏览我的网站可能会在10分钟内失去一次或两次会话。有时候,10分钟没有问题。希望它回答你的问题,如果你需要更多的信息,我可以问1And1托管 – 2010-09-29 19:36:11

回答

2

请与您的应用程序没有被一个负载平衡服务器上托管的托管服务提供商。如果服务器负载均衡,则当负载均衡器将请求发送到其他服务器时,用户将丢失会话状态信息。有3个设置会话状态模式属性: InProc - 将状态信息本地存储在发出请求的服务器上(仅当应用程序在非负载平衡环境中的单个服务器上托管时才有效) 的StateServer - 允许专门配置的服务器主机的状态信息为整个Web场(我相信StateServer的开始.NET框架2.0版将提供)。 SqlServer的 - 允许专门配置的SQL Server实例来存储会话信息的Web场 [此信息将改变Web园方案略低。]

有关会话状态的更多信息,请参见MSDN

这可以根据自己的负载平衡设置(认为:粘性负载平衡)非常随机发生的,可以工作几分钟一次,失败几乎立即另一个时间。

另一种可能是在web.config将sessionState设置的超时属性已被设置为一个低的值(它是在分钟)并且会话到期。

+0

对于超时属性,这是可以的。会话设置为1小时,所以这不是问题。但负载平衡真的很有趣。我会期待我的公司看看他们是否这样做。但我期待在sqlserver中创建我的会话。我会保持这个线程更新,并在你的问题消失后立即回答为“接受”:) – 2010-09-30 14:09:21

+0

你是对的......他们使用负载平衡,所以每次服务器发生变化时,我都会松开会话。但现在我正在寻找一种使用会话的方式。我会写一个新的问题!非常感谢! – 2010-10-04 18:56:19