Classic ASP中Session值无法传递到弹出窗口问题排查求助
Classic ASP Session传递到弹出窗口失败排查方案
- 域名/协议一致性问题
Session是和站点域名、访问协议强绑定的,你代码中写的绝对路径http://www.example.com/popup.asp如果和当前页面访问的地址不一致(比如当前页是https协议、不带www的域名、端口不同),会被识别为两个不同站点,Session无法共享。建议把链接修改为相对路径:
<a href='/popup.asp' target='_self' onclick='veh(this.href);return false'><img border='0'src='images/info.jpg'></a>
- SessionID一致性校验
Classic ASP依赖Cookie存储SessionID识别用户会话,你可以分别在主页面和弹出窗口加入调试代码,输出SessionID对比:
<% Response.Write "当前SessionID:" & Session.SessionID %>
如果两个页面的SessionID不同,说明会话未打通,可检查浏览器是否禁用了对应站点的Cookie、是否有安全软件拦截了ASPSESSIONID Cookie。
- 页面配置检查
确认popup.asp页面顶部没有声明<%@ EnableSessionState=False %>,该声明会禁用当前页面的Session读取权限,即使IIS全局开启了Session状态也不生效。 - 代码逻辑排查
- 确认主页面的ASP代码块正确闭合,你贴出的主页面代码中,数据库操作结束后没有写
%>闭合ASP块就直接写HTML标签,可能导致Session赋值逻辑未正确执行(如果你实际运行的代码已经闭合可忽略此条) - 确认点击弹出链接时,主页面已经完成加载,Session("Veh")已经完成赋值,可以在主页面提前输出
<%=Session("Veh")%>确认赋值时机早于点击动作。
- 临时替代方案
如果排查Session问题耗时,你可以直接把值拼接在URL参数中传递给弹出窗口,不需要依赖Session:
<a href='http://www.example.com/popup.asp?veh=<%=Server.URLEncode(strVeh)%>' target='_self' onclick='veh(this.href);return false'><img border='0'src='images/info.jpg'></a>
弹出窗口直接读取参数即可:
strVal = Request.QueryString("veh")
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

