我最近将一个经典的asp站点移动到运行IIS 7.5的Windows 2008服务器上。
主页是一个框架页面,上面有两个框架 - 底部框架包含两个iframe。 javascript计时器在标题框架中运行,并强制两个iframe中的页面每10分钟重新加载一次。在所有其他条件相同的情况下,这非常有效 - 会议永远不会超时。在屏幕上,我显示“10.35的最后更新” - 因此用户可以看到上次更新的时间。主框架页面中的每个页面 - 以及iframe - 都位于顶部..
IF IsEmpty(Session("CoID")) THEN
Response.Write ... some javascript to replace the main page with the log in page
END IF
正如我所说 - 这在大部分时间都是完美的。
使用网站作为用户 - 如果我的盒子进入睡眠状态并且由于互联网连接不可用而刷新无效 - 当我将盒子唤醒时,页面可能会坐在那里,最后更新时间为10.50(对于例如,这可能是两个小时前)。机器立即唤醒刷新尝试发生 - 现在您认为会话将丢失,检测到空会话的代码将启动并用登录页面替换页面。但是,这不会发生。相反,我得到两个500内部服务器错误消息,其中iframe中的两个页面应该是。
我不明白的是 - 如果我右键单击标题并选择“刷新” - 它会执行它应该做的事情 - 检测到会话为空并用登录页面替换主页面。为什么iframe中的两个页面没有做同样的事情?检测空会话代码在所有页面上都是相同的,但由于某种原因,当刷新尝试重新加载两个iframe中的页面时 - 会生成500内部服务器错误。
答案 0 :(得分:0)
我建议将Session("CoID")
分配给变量,然后对其进行测试,即
Dim sess
sess = Session("CoID")
If sess = "" Then
' code you want to execute '
End If
由于IsEmpty
有时会意外地将true
验证为已分配空行的字符串,我认为检查变量是否等于""
更安全。