ASP会话变量丢失了

时间:2010-06-29 19:49:18

标签: asp-classic

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

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

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

我有其他会话变量,它们会在页面中保持不变。我可以在PageA.asp上回复我的会话变量,所以我知道它被正确创建了。

几个月前我遇到了这个问题。我想出来了,从现在到现在,我的修复被覆盖了。现在,我完全失去了。

提前致谢。

7 个答案:

答案 0 :(得分:1)

您可能正在清除网站中其他位置的变量。

答案 1 :(得分:1)

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

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

我向微软提交了错误报告,但到目前为止还没有任何关于他们如何或将要做什么来解决这个问题的消息。

答案 2 :(得分:0)

PageB.asp在同一个域上吗?跨域会话将无法正常工作。除非您重置或清除内容,否则不应清除相同的域会话。

您是否拥有填充会话的代码?

答案 3 :(得分:0)

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

除非

  1. 你把它设置为快到期。
  2. 您在pageB.asp上的会话变量名称中输入了拼写错误。将粘贴从pageA复制到pageB。
  3. 没有看到与pageA和pageB中的会话变量相关的代码,很难猜到..

    关于会话变量丢失的评论,请尝试:

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

    这应该列出会话

    中存储的所有对象

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

尝试限制&#34; Web Garden&#34;工人进程为1。

在此处找到它:

&#34; IIS Mananger&#34; - &GT; &#34;应用程序池&#34; - &GT; &#34;属性&#34; - &GT; &#34;性能&#34;标签 - &gt; &#34;最大工作进程数&#34;