【问题标题】:Internal Server 500 error classic asp on IIS 7.5IIS 7.5 上的内部服务器 500 错误经典 asp
【发布时间】:2011-11-09 12:48:56
【问题描述】:

我最近将一个经典的 asp 站点移到了运行 IIS 7.5 的 Windows 2008 服务器上。

主页是一个框架页面,上面有两个框架 - 底部框架包含两个 iframe。 javascript 计时器在标头框架中运行,并强制两个 iframe 中的页面每 10 分钟重新加载一次。在所有其他条件相同的情况下,这可以完美运行 - 会话永远不会超时。在屏幕上,我显示“上次更新时间为 10.35”——因此用户可以看到上次更新时间。主框架页面中的每个页面 - 以及 iframes - 在顶部都有..

IF IsEmpty(Session("CoID")) THEN
Response.Write ... some javascript to replace the main page with the log in page
END IF

正如我所说 - 这在大多数情况下都非常有效。

以用户身份使用网站 - 如果我的盒子进入睡眠状态并且由于 Internet 连接不可用而无法刷新 - 当我唤醒盒子时,页面可能会在 10.50 的最后一次更新时坐在那里(对于例如,这可能是两个小时前)。机器立即唤醒刷新尝试发生 - 现在您会认为会话将​​丢失并且检测空会话的代码将启动并将页面替换为登录页面。但是,这不会发生。相反,我收到两个 500 内部服务器错误消息,其中 iframe 中的两个页面应该是。

我不明白的是 - 如果我右键单击标题并选择“刷新” - 它会做它应该做的 - 检测到会话为空并用登录页面替换主页。为什么 iframe 中的两个页面不做同样的事情?检测空会话代码在所有页面上都是相同的,但由于某种原因,当刷新尝试重新加载两个 iframe 中的页面时 - 会生成 500 内部服务器错误。

【问题讨论】:

  • 是什么导致了 500 错误?您是否在 IIS 中启用了详细错误以查看它落在哪一行?

标签: asp-classic iis-7.5


【解决方案1】:

我建议将Session("CoID") 分配给一个变量,然后对其进行测试,即

Dim sess
sess = Session("CoID")

If sess = "" Then 
    ' code you want to execute '
End If

由于IsEmpty 有时会意外地将已分配空行的字符串验证为true,我认为检查变量是否等于"" 更安全。

【讨论】:

    猜你喜欢
    • 2012-10-27
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2011-06-29
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多