为什么我的会话变量会在 5 分钟内丢失?
-
06-07-2019 - |
题
我有一个网页,用户在其中选择一家公司,然后我通过会话将公司名称保留在内存中,但是当我转到下一页时,会话只持续 5 分钟左右?不管为什么以及如何解决这个问题,我确实在 Web.config 中扩展了会话状态,但这不起作用。
例子:Session("公司名称") = "字节科技"
在我的 web.config 中我有:超时=“40”/>
我使用 Session("CompanyName") 从 Default.aspx 移动到 CompanyDetail.aspx
但是,如果我让 CompanyDetail.aspx 中的程序空闲,我就会丢失会话状态。
有任何想法吗?
关于Etienne
解决方案 8
谢谢大家的所有信息。托管我网站的公司只是延长了应用程序池的时间,而且工作正常!
由于 艾蒂安 http://www.erate.co.za
其他提示
我看到您认为您的站点位于负载平衡服务器场中。
在这种情况下,您需要将会话存储在数据库中或避免使用它:您不能确定每次回发时同一服务器将为同一用户提供服务,并且如果用户从服务器“A”进入服务器。到服务器“B”在两个不同的帖子中...你的会话变量丢失了。
尝试谷歌搜索“sessionstate数据库”,你会发现很多东西。
希望这会有所帮助
安德烈
一些问题:
- 超时时间总是相同的?5分钟?
- 您的站点是否在负载平衡服务器场中运行?拥有多个前端服务器?
- 关于会话和会话状态,您在 web.confing 中讲述了什么?
我打赌你不使用负载均衡的服务器场,并且实际上正在使用共享主机。
在负载平衡服务器场中,您的代码将部署到多个服务器,如果禁用了粘性会话,则用户将使用每个请求负载最小的服务器。
由于您使用的是第三方托管,我非常怀疑您是否正在这样做。
主机提供商可以在IIS中对会话超时进行硬设置,最可能的罪魁祸首是他们将此设置为5分钟。
致电您的主机提供商,询问他们的IIS会话设置是什么,然后从那里开始。
在IIS中,进入您网站的属性,单击“主目录”选项卡,然后单击“配置”按钮。在这里,单击选项选项卡,然后检查会话超时。我很确定这只影响经典的ASP,但我不是百分百肯定。
如果这种情况始终发生在5分钟,请检查web.config以查看会话设置,并检查IIS:website / Properties / ASP.NET,单击Edit Configuration,选择State Management选项卡,然后检查会话设置。
服务器上是否会有一些防病毒导致Web应用每5分钟重置一次,ASP.NET运行时认为二进制文件或web.config已更改?这也是可能的。
另一个想法是将机器名称放在页面上的注释中,看看是否在页面之间发生变化,只是为了确认处理请求的服务器发生了变化。
我决定使用Session Variables废弃并使用Query Strings !!好多了!!