为什么我会在5分钟内丢失会话变量?

时间:2008-11-03 07:45:08

标签: asp.net iis session session-state

我有一个用户选择公司的网页,我通过会话将公司名称保留在内存中,但是当我转到下一页时,会话只持续5分钟? 任何原因以及我如何解决这个问题,我确实在Web.config中扩展了Session状态但是没有用。

示例:会话(“CompanyName”)=“字节技术”

在我的web.config中,我有: timeout =“40”/>

我使用Session(“CompanyName”)从Default.aspx移至CompanyDetail.aspx

但如果我让程序在CompanyDetail.aspx中空闲,我就会失去会话状态。

有什么想法吗?

此致 艾蒂安

9 个答案:

答案 0 :(得分:6)

从您的评论

我看到您认为您的站点位于负载平衡服务器场中。

在这种情况下,您需要将会话存储在db中或避免使用它:您不能确定每次回发时同一服务器将为同一用户提供服务,并且如果用户从服务器“A”转到服务器“B”在两个不同的帖子中...你的会话变量丢失了。

尝试谷歌搜索“sessionstate数据库”,你会发现很多东西。

希望这会有所帮助

安德烈

答案 1 :(得分:4)

一些问题:

  • 超时时间总是一样的? 5分钟?
  • 是您的站点在负载平衡服务器场中运行?有多个前端服务器?
  • 你在关于会话和会话状态的web.confing中告诉你什么?

答案 2 :(得分:3)

我打赌你不使用负载均衡的服务器场,并且实际上正在使用共享主机。

在负载平衡服务器场中,您的代码将部署到多个服务器,如果禁用了粘性会话,则用户将使用每个请求负载最小的服务器。

由于您使用的是第三方托管,我非常怀疑您是否正在这样做。

主机提供商可以在IIS中对会话超时进行硬设置,最可能的罪魁祸首是他们将此设置为5分钟。

致电您的主机提供商,询问他们的IIS会话设置是什么,然后从那里开始。

答案 3 :(得分:1)

在IIS中,进入您网站的属性,单击“主目录”选项卡,然后单击“配置”按钮。在这里,单击选项选项卡,然后检查会话超时。我很确定这只影响经典的ASP,但我不是百分百肯定。

答案 4 :(得分:1)

如果这种情况始终发生在5分钟,请检查web.config以查看会话设置,并检查IIS:website / Properties / ASP.NET,单击Edit Configuration,选择State Management选项卡,然后检查会话设置。

答案 5 :(得分:0)

服务器上是否会有一些防病毒导致Web应用每5分钟重置一次,ASP.NET运行时认为二进制文件或web.config已更改?这也是可能的。

答案 6 :(得分:0)

另一个想法是将机器名称放在页面上的注释中,看看是否在页面之间发生变化,只是为了确认处理请求的服务器发生了变化。

答案 7 :(得分:0)

谢谢大家的所有信息。托管我网站的公司只是延长了应用程序池的时间,而且工作正常!

由于 艾蒂安 http://www.erate.co.za

答案 8 :(得分:0)

我决定使用Session Variables废弃并使用Query Strings !!好多了!!

相关问题