1

我有一个网页,用户可以在其中选择一家公司,并通过会话将公司名称保存在内存中,但是当我转到下一页时,会话仅持续 5 分钟?无论出于何种原因以及如何解决此问题,我确实在 Web.config 中扩展了会话状态,但这不起作用。

示例:Session("CompanyName") = "Bytes Technology"

在我的 web.config 我有: timeout="40" />

我使用 Session("CompanyName") 从 Default.aspx 移动到 CompanyDetail.aspx

但是,如果我让 CompanyDetail.aspx 中的程序空闲,我会丢失会话状态。

有任何想法吗?

问候艾蒂安

4

9 回答 9

6

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

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

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

希望这可以帮助

安德烈亚

于 2008-11-03T08:26:00.407 回答
4

一些问题:

  • 超时时间总是一样的?5分钟?
  • 您的站点是否在负载平衡服务器场中运行?有多个前端服务器?
  • 您在 web.confing 中关于会话和会话状态的内容是什么?
于 2008-11-03T07:53:32.110 回答
3

我敢打赌你没有使用负载平衡的农场,实际上是在使用共享主机。

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

由于您使用的是 3rd 方托管,我严重怀疑您是否这样做。

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

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

于 2008-11-03T20:38:22.360 回答
1

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

于 2008-11-03T07:54:44.757 回答
1

如果这种情况总是在 5 分钟后发生,请检查 web.config 的会话设置,并检查 IIS:website/Properties/ASP.NET,单击编辑配置,选择状态管理选项卡,然后检查会话设置。

于 2008-11-03T08:08:58.660 回答
0

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

于 2008-11-03T08:17:29.797 回答
0

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

于 2008-11-03T20:30:37.417 回答
0

谢谢大家提供的所有信息。托管我的网站的公司刚刚延长了应用程序池的时间,并且奏效了!

谢谢艾蒂安 http://www.erate.co.za

于 2008-11-04T09:27:27.067 回答
0

我决定放弃使用会话变量并使用查询字符串!好多了!!

于 2009-01-05T09:27:57.033 回答