我有一个用户选择公司的网页,我通过会话将公司名称保留在内存中,但是当我转到下一页时,会话只持续5分钟? 任何原因以及我如何解决这个问题,我确实在Web.config中扩展了Session状态但是没有用。
示例:会话(“CompanyName”)=“字节技术”
在我的web.config中,我有: timeout =“40”/>
我使用Session(“CompanyName”)从Default.aspx移至CompanyDetail.aspx
但如果我让程序在CompanyDetail.aspx中空闲,我就会失去会话状态。
有什么想法吗?
此致 艾蒂安
答案 0 :(得分:6)
我看到您认为您的站点位于负载平衡服务器场中。
在这种情况下,您需要将会话存储在db中或避免使用它:您不能确定每次回发时同一服务器将为同一用户提供服务,并且如果用户从服务器“A”转到服务器“B”在两个不同的帖子中...你的会话变量丢失了。
尝试谷歌搜索“sessionstate数据库”,你会发现很多东西。
希望这会有所帮助
安德烈
答案 1 :(得分:4)
一些问题:
答案 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 !!好多了!!