我有一个网页,用户在其中选择一家公司,然后我通过会话将公司名称保留在内存中,但是当我转到下一页时,会话只持续 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 !!好多了!!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top