ASP中的会话未存储值

时间:2019-03-18 18:08:54

标签: asp-classic

我在第一页中有两个ASP页面,名为verify.asp,我已经编写了以下代码:

verify.asp

    <%
       Username = Request.Form("loginx")    
       Password = Request.Form("passx")
       liberado
       Session("liberado") = Username 

  %>

在第二页中,我尝试将会话可变参数“ liberado”用于任何结果 barra.asp,

<%
  response.write(session("liberado"))
%>

我在做什么错?我在Windows 7的IIS上使用chrome,用户名和密码具有值

2 个答案:

答案 0 :(得分:1)

您的代码并没有真正的错。尽管我可以看到您现在已经对其进行了编辑,以将dim中的liberado删除,但是您已经将liberado留在了后面。这意味着您的ASP将尝试调用一个名为liberado的子项,该子项可能不存在。您可以继续删除该行。

<%

    Dim Username, Password

    Username = Request.Form("loginx")
    Password = Request.Form("passx")

    Session("liberado") = Username 

%>

在禁用会话状态的情况下尝试设置会话可能会导致某种错误(并且您没有在问题中提及错误)。但是,请确保通过打开IIS并在ASP>会话属性下将“启用会话状态”设置为“真”来启用它。

如果这是真的,那么您的表单可能有问题,并且数据没有发布。在您的verify.asp页上,尝试运行以下代码:

for each item in request.form
    response.write item & ": " & request.form(item) & "<br>"
next

这将输出要发布的所有表单数据的列表。

这也可能是cookie问题。如果您要阻止在Chrome中设置Cookie,则将没有ASP会话Cookie,因此当您在页面之间移动时,将无法访问会话值。

在Chrome中,按F12打开开发人员工具,单击“应用程序”标签,然后从“ Cookies”下拉菜单中选择您的域。检查是否存在一个ASPSESSIONID cookie,并且两个ASP页面上的cookie相同。

答案 1 :(得分:0)

检查IIS中的应用程序池设置。如果在“最大工作进程数”下有多个活动的工作进程,则会话并不总是有效。会话是按进程存储的,如果其他工作进程处理了第二个请求,则可能会丢失第一个请求的会话。设置为“ 0”表示IIS使用所需的进程数。

更多信息here

enter image description here