【问题标题】:ASP session variable lostASP 会话变量丢失
【发布时间】:2011-03-09 19:42:31
【问题描述】:

在 PageA.asp 上我像这样设置了一个会话变量

Session("affiliate") = "xyz.com"

当我单击一个链接并转到 PageB.asp 时,该会话变量不再存在。

我还有其他会话变量,它们在页面中持续存在。我可以在 PageA.asp 上 response.write 我的会话变量,所以我知道它是正确创建的。

几个月前我遇到了这个问题。那时我想通了,有时我的修复被覆盖了。现在,我完全不知所措了。

提前致谢。

【问题讨论】:

  • 您使用的是哪个版本的 IIS?

标签: asp-classic


【解决方案1】:

您可能正在您网站的其他地方清除该变量。

【讨论】:

  • 奇怪的是 pageA 上大约有 20 个会话变量。在 pageB 上大约有 12 个会话变量。那 8 个会话变量去哪了?
  • 每个会话变量占用 5kb+ 乘以 20 是每个浏览器的 0.5mb。也许您的服务器上没有足够的内存并且一些变量正在丢失..它们总是一样丢失吗?还是不时变化?
【解决方案2】:

PageB.asp 是否在同一个域中?跨域会话将不起作用。除非您正在重置它或清除内容,否则不应清除相同的域会话。

您有填充会话的代码吗?

【讨论】:

  • 他说其他会话变量正在工作..所以我们猜它在同一个域上..但是问题被问到好像不是真的愿意回答..
【解决方案3】:

如果其他会话变量在 PageB.asp 上仍然可用,那么这应该也可以工作..

除非,

  1. 您已将其设置为快速过期。
  2. 您在 pageB.asp 上的会话变量名称中有错字。从 pageA 复制粘贴到 pageB。

如果没有看到 pageA 和 pageB 中与会话变量相关的代码,很难猜到..

至于您对会话变量丢失的评论尝试:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>

这应该列出存储在会话中的所有对象

【讨论】:

    【解决方案4】:

    无论我做什么,会话变量都会在 response.redirects 上丢失。我最终使用了一个cookie。

    【讨论】:

    • 你是怎么使用cookie的?
    【解决方案5】:

    不久前我发现了另一个问题。 如果您使用的是 2008-2003 服务器(IIS6-7),请确保您没有使用除 80 之外的任何其他端口。

    如果网站设置为使用除 80 以外的任何其他端口,由于某些原因,最新版本的 IIS 在重定向时会丢失会话。

    我向 Microsoft 提交了错误报告,但到目前为止,他们没有任何消息,他们将如何或将采取什么措施来解决此问题。

    【讨论】:

      【解决方案6】:

      对于 IIS6,我们的主要会话杀手是负载平衡器。解决此问题的方法是转换为 IIS 7。它处理平衡服务器之间的会话。是的,我们也在 cookie 中放入大量的东西来处理它。

      【讨论】:

        【解决方案7】:

        尝试将“Web Garden”工作进程限制为 1。

        在这里找到它:

        “IIS管理器”-->“应用程序池”-->“属性”-->“性能”选项卡-->“最大工作进程数”

        【讨论】:

          猜你喜欢
          • 2016-09-03
          • 1970-01-01
          • 2011-04-15
          • 2014-03-24
          • 2011-12-05
          • 2012-10-18
          • 2012-01-10
          • 2020-01-09
          相关资源
          最近更新 更多