asp-classic - ASP 经典 session 变量并不总是被设置

标签 asp-classic

我正在维护一个经典的 ASP 网站,最近我们想要在访问者来自一组特定网站时执行特殊的呈现操作。因此,在这些访问者必须通过才能访问我们网站的页面中,我放置了一行简单的行来设置 session 变量:

<!-- #include virtual="/clsdbAccess.cs"-->
<%
    set db = new dbAccess
%>
<html>
    <head>
      ...
          <script language="javascript" type="text/javascript">
           ...            
           </script>
    </head>

    <body>
    <%
    Session("CAME_FROM_NEWSPAPER") = "your local newspaper"  
    ...
    %>
      ... html stuff ...
    </body>
 </html>

然后,在接下来的所有页面中,每当我需要放置我们不想向这些访问者显示的导航链接、菜单等时,我都会测试该 session 变量是否为“”,然后进行相应的渲染。

我的问题是,它似乎在开发中对我来说非常有效,然后我将其投入生产,有时它工作得很好,而其他时候则根本不起作用。有时 session 变量会被设置,有时则不会。其他一切都很好。但我们的客户在呈现给访问者的页面上看到不一致的结果,这是一个问题。我尝试从不同的电脑登录,并确认我得到了不同且不可预测的结果。问题是我无法随意重现它,并且无法对生产进行故障排除/跟踪。

目前,我已经解决了这个问题,只需创建具有特殊渲染的重复页面,并确保这些访问者前往那里。但这是一种黑客行为,最终将难以维护。

经典 ASP 中的 session 变量有什么特殊的或不一致的地方吗?有更好的方法来解决这个问题吗? TIA。

更新 我发现,当您第一次通过该页面访问该站点时, session 变量不会被设置。菜单和所有内容(在这些情况下应该不会出现)都会在第一次出现。然后,如果您返回并刷新登录页面,请再次浏览到同一页面,这次可以正常工作,之后也是如此。然后我删除了所有缓存、cookie 等,然后再次点击登录页面,再次进入我的页面:Bam,菜单(即没有 session 变量)。我创建了一个页面“sessionvars.asp”,在其中显示该变量的内容,果然,它是空白的。至少现在我可以随意重现问题,我应该能够在 Dev 上复制它并追踪它。

最佳答案

我在使用 VPS 服务器时遇到了同样的问题。您不能在经典 ASP 中将 Web Garden 与 session 变量一起使用。

转到 IIS 管理器 - Web 应用程序池并将工作进程数更改为 1。

如果您位于共享主机中,请要求此配置或更改为只有一名工作人员的应用程序池。

更多信息: http://bytes.com/topic/asp-classic/answers/54826-asp-sessions-web-gardens

问候

www.imaginacolombia.com

关于asp-classic - ASP 经典 session 变量并不总是被设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638918/

相关文章:

sql - 如何在SQL Server数据库中隐藏用户密码

encryption - SagePay 表单 - 经典 ASP - 使用 rijndael.asp 时缺少货币字段

xml - 解析YouTube XML

php - 根据数字删除MySQL记录

Eclipse – ASP 经典插件

iis - 服务器对象错误 'ASP 0177 : 800401f3' Server.CreateObject 失败 - 仅当未登录服务器时

php - 经典 ASP 等效 curl_setopt($ch, CURLOPT_SSLVERSION, 0);

asp-classic - 如何确定经典 ASP 中浏览器当前使用的语言?

mysql - asp - mysql不更新记录

JavaScript 调用存储过程