我在第一页中有两个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,用户名和密码具有值
答案 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