2009-12-04 24 views
1

我已经阅读了几乎每篇博客文章,文章和帮助文档发布有关此问题,他们没有帮助。最常见的建议是:如何调试由Plesk(运行ASP经典版)管理的IIS 6.0上的500内部服务器错误?

  1. 互联网浏览器 - >工具菜单 - > Internet选项 - >高级 - >显示友好的错误信息(确保这不是打勾)

  2. IIS - >主目录选项卡 - >配置 - >调试选项卡 - >发送详细的ASP错误信息给客户端(确保选择此项)

的这些都没有工作,我有一种感觉它与Plesks做管理IIS。有没有办法看到这些内部服务器错误是什么?即使这意味着在服务器周围浏览日志文件?

+0

你可以访问ASP源代码,并可以进行更改? –

+0

是的,该网站归我所有(但在同一个IIS 6.0中的多个其他网站上托管的服务器) – Jimbo

回答

2

以下仅适用于Plesk中。

继续访问Plesk控制面板中的域,并关闭“物理托管设置”下的“自定义错误文档”。这将直接向浏览器发送错误消息。

您也可以在日志文件目录的错误消息yourdomain.com\statistics\logs\W3SVCXXXX

1

通过Agent_9191刺激了一个想法:

在页面放顶:

On Error Resume Next 

,并在页面放的底部:

If Err.Number <> 0 Then Response.Write(Err.Description) 

任何其他的想法上直接从IIS调试而不更改页面代码?

0

“如果”你有能力有机会您的自定义500错误页面,那么你可以使用捕获错误一个调用Server.GetLastError,它会给你所有的细节(大多数),它应该让你开始现场调试。

http://www.w3schools.com/ASP/asp_ref_error.asp

你能不能在本地重现问题?

3

可以使用class_terminate事件来创建全局错误处理程序,而无需触摸iis配置。当ASP遇到错误时,server.execute将配置500处理程序,然后返回到原始脚本清理所有剩余的对象。

这为您提供了创建全局调试器对象并使用class_terminate事件来处理错误(例如,打印调试信息)的机会。

如:

class cDebugger 
    private sub class_terminate 
     if err then 
      response.clear 
      dim asp_error 
      set asp_error = server.getLastError() 
      response.write asp_error.description 
      ... 
      ... 
     end if 
    end sub 
end class 
set [_debugger] = new cDebugger 
+0

这听起来像是一个不错的选择,该代码将放在哪里?谢谢 – Jimbo

+0

将它放入包含文件中,并将此文件添加到您要调试的每个页面。 –