【问题标题】:ASP.NET Session disappear/ReappearASP.NET 会话消失/重新出现
【发布时间】:2011-01-05 22:11:02
【问题描述】:

我一直在网上查看,试图找到在我之前遇到过这个问题的其他人,但没有人描述我所处的确切情况。其他人有丢弃会话状态,或者他们有短会话状态,例如 5 分钟,或类似的东西。然而,我的问题是,我的会话状态变量似乎在一次回发中存在,在下一个回发时跳过,有时还会在第三次回发中出现。

您可以登录我的网站:EpicClanWars.com,然后可能会刷新几页,然后在第 2 或第 3 个不同的页面之后,您会看到右上角的登录文本框,就像您没有登录一样。但是如果您再次刷新页面,该站点将显示您再次登录。

我假设这与视图状态有关,但我对 ASP.NET 视图状态或如何对其进行故障排除知之甚少。为了支持这一点,我收到了几条与 MAC 问题和视图状态问题有关的错误消息(遗憾的是我忽略了为这篇文章保存)。

我最近不得不在运行我的网站的机器上重新安装操作系统。当我这样做时,我重新安装了 Visual Studio、IIS、SQL Server,一切。在重新安装之前我没有这个问题。我正在使用 VS.NET 2005 和 IIS 7。

这是怎么回事?

【问题讨论】:

  • 你是否使用 SQL Server 来保持会话?
  • @Aristos 不,我允许 ASP 服务器按照选项所说的“处理中”管理会话(所以我假设它保存在内存中)@Russ Cam 你能详细说明吗?
  • 似乎不看代码就很难弄清楚发生了什么。可以分享一下吗?
  • 您的网站在网络农场中吗?它运行多个版本?
  • 不,只是在一台 IIS 上的一台计算机上运行的一个站点...安装了 IIS 6,但据我了解,IIS 7 胜过 6

标签: asp.net iis visual-studio-2005 viewstate


【解决方案1】:

您可以登录我的网站: EpicClanWars.com 然后也许 刷新几页,然后在 第二或第三个不同的页面,你得到 右上角的登录文本框 就像你没有登录一样。但是然后 如果再次刷新页面,则 网站将显示您再次登录。

这是一个缓存问题。 从您拥有动态页面并在每个页面上保持登录的那一刻起,您就需要绝对不要在客户端上保留缓存页面。因此,您的客户端只需读取缓存页面,更新后获取新页面。

在您给您的页面上,www. 也存在 dns 问题,请检查并使其正常工作。您需要将 www.epicclanwars.com 重定向到 epicclanwars.com,如果您赢了只保留一份副本。此时www.epicclanwars.com,根本不工作。

将它们保存在内存中的“进行中”在共享环境中不是那么准确,如果您的计算机运行在他的限制范围内,或者您出于任何原因多次重新启动池,则可能会丢失会话。也许如果你不解决页面缓存的问题,也可以考虑移动数据库上的会话。

同时在 web.config 上检查会话、httpCookiesformsroleManager,必须具有 domain="epicclanwars。 com”

【讨论】:

  • 谢谢,我忘了为 WWW 添加其他绑定。这个问题已经解决了……我会看看缓存,h/o
  • 实际上,我收回了“它解决了所有问题”......问题仍然存在,它在没有缓存的情况下工作得更好。所以这个问题仍然悬而未决。
  • @Jrud 您不仅需要禁用缓存,还需要为无缓存添加标头!
  • 好的,我在我的母版页的页面加载事件中添加了 2 行,这似乎已经成功了:Response.Cache.SetNoStore() Response.Cache.SetCacheability(HttpCacheability.NoCache)跨度>
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2017-07-26
  • 2018-01-20
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多