【问题标题】:Session in ASP is not storing valuesASP 中的会话不存储值
【发布时间】:2019-03-18 18:08:53
【问题描述】:

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

验证.asp

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

  %>

在第二页中,我尝试将会话变量“liberado”用于任何结果 巴拉.asp ,

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

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

【问题讨论】:

标签: asp-classic


【解决方案1】:

您的代码没有任何问题。尽管我可以看到您现在已对其进行了编辑以从 liberado 中删除 dim,但您已将 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。

【讨论】:

    【解决方案2】:

    检查 IIS 中的应用程序池设置。如果在“最大工作进程”下有多个工作进程处于活动状态,则会话并不总是有效。会话是按进程存储的,如果另一个工作进程处理第二个请求,则第一个请求中的会话可能会丢失。设置为“0”意味着 IIS 根据需要使用尽可能多的进程。

    更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2017-08-23
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多