有关win2000、IIS5中asp详细出错信息的显示(不难,但很多人问)

2013 年 8 月 20 日4300

  最近经常有人问在win2000和IIS5中不显示ASP错误的详细信息,而只显示错误号,如"错误ID800xxxxx",这使得程序调试很不方便,有些人采取在IIS中设置500-100错误指向默认,这样做也不会出现详细的错误信息。实际上这可能是微软出于安全考虑而在500-100.asp中没有显示详细出错信息。其实,你只要把500-100.asp稍加修改就可以了。下面是我修改的这个文件的内容。你只要把他copy下来存为500-100.asp然后覆盖原来的这个文件就可以了。注意文件中两行横线之间就是我修改的部分。

  500-100.asp:

  <%@ language="VBScript" %>

  <%

  Option Explicit

  Const lngMaxFormBytes = 200

  Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP

  Dim strMethod, lngPos, datNow, strQueryString, strURL

  If Response.Buffer Then

  Response.Clear

  Response.Status = "500 Internal Server Error"

  Response.ContentType = "text/HTML"

  Response.Expires = 0

  End If

  Set objASPError = Server.GetLastError

  %>

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

  <html dir=ltr>

  <head>

  <style>

  a:link {font:9pt 宋体; color:FF0000}

  a:visited {font:9pt 宋体; color:#4e4e4e}

  </style>

  <META CONTENT="NOINDEX">

  <title>本页无法显示</title>

  <META HTTP-EQUIV="Content-Type" Content="text-html; charset=gb2312">

  <META CONTENT="ZH-CN">

  </head>

  <script>

  function Homepage(){

  <!--

  // in real bits, urls get returned to our script like this:

  // res://shdocvw.dll/http_404.htm#http://http://www.zjjv.com///bar.htm

  //For testing use DocURL = "res://shdocvw.dll/http_404.htm#https://http://www.zjjv.com//bar.htm"

  DocURL=document.URL;

  //this is where the http or https will be, as found by searching for :// but skipping the res://

  protocolIndex=DocURL.indexOf("://",4);

  //this finds the ending slash for the domain server

  serverIndex=DocURL.indexOf("/",protocolIndex + 3);

  //for the href, we need a valid URL to the domain. We search for the # symbol to find the begining

  //of the true URL, and add 1 to skip it - this is the BeginURL value. We use serverIndex as the end marker.

  //urlresult=DocURL.substring(protocolIndex - 4,serverIndex);

  BeginURL=DocURL.indexOf("#",1) + 1;

  urlresult=DocURL.substring(BeginURL,serverIndex);

  //for display, we need to skip after http://, and go to the next slash

  displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);

  document.write('<A HREF="' + urlresult + '">' + displayresult + "</a>");

  }

  //-->

  </script>

  <body bgcolor="FFFFFF">

  <table cellpadding="3" cellspacing="5">

  <tr>

  <td valign="middle">

  <h1><!--Problem-->本页无法显示</h1>

  </td>

  </tr>

  <tr>

  <td colspan="2">

  <font>试图访问的网页出现问题,无法显示。</font></td>

  </tr>

  <tr>

  <td colspan="2">

  <font>

  <hr color="#C0C0C0" noshade>

  <p>请尝试以下方法:</p>

  <ul>

  <li>单击

  <a href="javascript:location.reload()">

  刷新</a>按钮或者梢候再试。<br>

  </li>

  <li>打开

  <script>

  <!--

  if (!((window.navigator.userAgent.indexOf("MSIE") > 0) && (window.navigator.appVersion.charAt(0) == "2")))

  {

  Homepage();

  }

  //-->

  </script>

  主页,然后查找与所需信息相关的链接。 </li>

  </ul>

  <h2>HTTP 500.100 - 内部服务器错误 - ASP 错误<br>

  Internet 信息服务</h2>

  <hr color="#C0C0C0" noshade>

  <p>技术信息(适用于支持人员)</p>

  <ul>

  <li>错误类型:<br>

  <%

  Dim bakCodepage

  bakCodepage = Session.Codepage

  Session.Codepage = 936

  Response.Write Server.HTMLEncode(objASPError.Category)

  If objASPError.ASPCode > "" Then Response.Write Server.HTMLEncode(", " & objASPError.ASPCode)

  Response.Write Server.HTMLEncode(" (0x" & Hex(objASPError.Number) & ")" ) & "<br>"

  If objASPError.ASPDescription > "" Then Response.Write Server.HTMLEncode(objASPError.ASPDescription) & "<br>"

  blnErrorWritten = False

  ' Only show the Source if it is available and the request is from the same Machine as IIS

  If objASPError.Source > "" Then

  strServername = LCase(Request.ServerVariables("SERVER_NAME"))

  strServerIP = Request.ServerVariables("LOCAL_ADDR")

  strRemoteIP = Request.ServerVariables("REMOTE_ADDR")

  If (strServername = "localhost" Or strServerIP = strRemoteIP) And objASPError.File <> "?" Then

  Response.Write Server.HTMLEncode(objASPError.File)

  If objASPError.Line > 0 Then Response.Write ", 第 " & objASPError.Line & " 行"

  If objASPError.Column > 0 Then Response.Write ", 第 " & objASPError.Column & " 列"

  Response.Write "<br>"

  Response.Write "<fontCOLOR:000000; FONT: 9pt 宋体""><b>"

  Response.Write Server.HTMLEncode(objASPError.Source) & "<br>"

  If objASPError.Column > 0 Then Response.Write String((objASPError.Column - 1), "-") & "^<br>"

  Response.Write "</b></font>"

  blnErrorWritten = True

  End If

  End If

  If Not blnErrorWritten And objASPError.File <> "?" Then

  Response.Write "<b>"

  Response.Write Server.HTMLEncode(objASPError.File)

  If objASPError.Line > 0 Then Response.Write Server.HTMLEncode(", 第 " & objASPError.Line & " 行")

  If objASPError.Column > 0 Then Response.Write ", 第 " & objASPError.Column & " 列"

  '-------------------------------------------------------------------

  ' added by Bigeagle

  ' date: 2000/5/10

  dim l_strAspDescription

  l_strAspDescription = "错误原因:" + objASPError.Description()

  if l_strAspDescription <> "" then

  response.write("<p>" + l_strAspDescription+ "</p>")

  end if

  l_strAspDescription = "详细描述:" + objASPError.ASPDescription()

  if l_strAspDescription <> "" then

  response.write("<p>" + l_strAspDescription+ "</p>")

  end if

  '-------------------------------------------------------------------

  Response.Write "</b><br>"

  End If

  %>

  </li>

  <p>

  <li>浏览器类型:<br>

  <%= Request.ServerVariables("HTTP_USER_AGENT") %>

  </li>

  <p>

  <li>页:<br>

  <%

  strMethod = Request.ServerVariables("REQUEST_METHOD")

  Response.Write strMethod & " "

  If strMethod = "POST" Then

  Response.Write Request.TotalBytes & " bytes to "

  End If

  Response.Write Request.ServerVariables("SCRIPT_NAME")

  lngPos = InStr(Request.QueryString, "|")

  If lngPos > 1 Then

  Response.Write "?" & Left(Request.QueryString, (lngPos - 1))

  End If

  Response.Write "</li>"

  If strMethod = "POST" Then

  Response.Write "<p><li>POST 数据:<br>"

  If Request.TotalBytes > lngMaxFormBytes Then

  Response.Write Server.HTMLEncode(Left(Request.Form, lngMaxFormBytes)) & " . . ."

  Else

  Response.Write Server.HTMLEncode(Request.Form)

  End If

  Response.Write "</li>"

  End If

  %>

  <p>

  <li>时间:<br>

  <%

  datNow = Now()

  Response.Write Server.HTMLEncode(FormatDateTime(datNow, 1) & ", " & FormatDateTime(datNow, 3))

  Session.Codepage = bakCodepage

  %>

  </li>

  </p>

  <p>

  <li>详细信息:<br>

  <% strQueryString = "prd=iis&sbp=&pver=5.0&ID=500;100&cat=" & Server.URLEncode(objASPError.Category) & _

  "&os=&over=&hrd=&Opt1=" & Server.URLEncode(objASPError.ASPCode) & "&Opt2=" & Server.URLEncode(objASPError.Number) & _

  "&Opt3=" & Server.URLEncode(objASPError.Description)

  strURL = "http://http://www.zjjv.com///ContentRedirect.asp?" & _

  strQueryString

  %>

  <a href="<%= strURL %>">Microsoft 支持</a>

  </li>

  </p>

  </font></td>

  </tr>

  </table>

  </body>

  </html>

0 0