HOW TO:解决与“HTTP 500 - Internal Server Error”(HTTP 500 – 内部服务器错误)错误信息有关的问题

时间:2022-09-17 20:03:12

 

概要

本文说明如何解决与“HTTP 500 - Internal server error”错误有关的问题。这些错误产生的原因很多,并且可影响许多不同的系统配置。解决过程按问题出现的情况分类。Administrators 组的成员必须执行本文中介绍的所有步骤。


尝试加载 Localstart.asp 文件时


当 Web 站点的一个默认文档 Iisstart.asp 尝试加载 Localstart.asp 文件时,如果尝试访问此页面的用户不具有运行 Localstart.asp 文件中包含的脚本的正确权限,您会收到 HTTP 500 错误信息。如果清除 显示友好 HTTP 错误信息复选框,将看到与下面的 HTTP 500 错误信息类似的信息:
Error Type:
Microsoft VBScript runtime (0x800A0046)
Permission denied:'GetObject'
/localstart.asp, line 19
出现此问题的原因是,Localstart.asp 文件中包含了使用 IIS Admin 对象访问元数据库的 Active Directory 服务接口 (ADSI) 和 Visual Basic Scripting Edition (VBScript) 代码。出于安全考虑,只有本地 Administrators 组的成员才能访问元数据库。这种现象是设计所导致的。

要解决此问题,请按照以下步骤操作:
1. 单击开始,指向程序,指向管理工具,然后单击 Internet 信息服务
2. 在控制台树中,单击默认 Web 站点。在显示窗格中,右键单击 Localstart.asp,然后单击属性
3. 文件安全选项卡的匿名访问和身份验证控制中,单击编辑
4. 身份验证方法属性页中,单击以清除匿名访问

浏览 ASP 页面时

当您浏览 Active Server Pages (ASP) Web 页面时,会收到“HTTP 500.100 - Internal Server Error - ASP error”错误信息。如果清除 显示友好 HTTP 错误信息复选框,将在“技术信息(用于支持人员)”部分看到类似下面这样的信息:
Error Type:
Microsoft VBScript runtime (0x800A01F4)
Variable is undefined:'x'
/OptionExplicitError.asp, line 9

Page:
GET /OptionExplicitError.asp
要解决此问题,请删除 Option Explicit 语句,或者使用 DIM 关键字声明变量。

要重现此问题,请在允许执行脚本的虚拟目录中运行包含以下代码的 ASP 文件:
<% Option Explicit %>
   <HTML>
   <HEAD>
   <TITLE>500-100 Undeclared Variable</TITLE>
   </HEAD>
   <BODY>
   <P>About to use an undeclared variable</P>
   <%
     x = 5
   %>
   </B></P>
   </BODY>
   </HTML>
				
要修改此示例,请使用 DIM 语句声明 X 变量,如下所示:
<% Option Explicit %>
   <HTML>
   <HEAD>
   <TITLE>500-100 Undeclared Variable</TITLE>
   </HEAD>
   <BODY>
   <P>About to use an undeclared variable</P>
   <%
     DIM x
     x = 5
   %>
   </B></P>
   </BODY>
   </HTML>
				

IIS 5.0 返回 Server.GetLastError 错误信息时

当某个 Web 应用程序或页面不可用时,IIS 会返回一个错误信息。其结果是自定义的 ASP 页面处理对服务器端脚本错误的响应。此页面返回状态“500 Internal Server Error”,这导致客户端远程脚本小程序不向远程脚本对象返回任何数据。

要解决此问题,请创建一个返回状态“200 OK”的自定义错误页面,然后在远程脚本服务器页面或应用程序的“自定义错误”部分引用此页面。为此,请按以下步骤操作:

注意:可以为各个页面、整个应用程序或者整个 Web 站点或 Web 服务器设置此自定义错误页面。
1. 创建 %SystemRoot%\WinNT\Help\IISHelp\Common\500-100.asp 的副本,并将它存储在与原始文件相同的文件夹中。将新文件命名为 500-100-OK.asp。
2. 单击开始,指向程序,指向附件,然后单击记事本
3. 在记事本中,单击文件菜单上的打开。在查找范围下拉框中,浏览到 500-100-OK.asp 文件,然后单击打开
4. 将下面的代码
Response.Status = "500 Internal Server Error"
					
替换为:
   Response.Status = "200 OK"
					
注意:如果以前没修改过错误信息,则代码的原始行为第 12 行。

5. 文件菜单中,单击保存
6. 在 Internet 服务管理器的控制台树中,单击您的 Web 服务器。如果您的远程脚本 ASP 页面位于其中一个 Web 站点下的 Web 应用程序中,则展开您的 Web 应用程序。
7. 在“详细信息”窗格中,右键单击您的远程脚本服务器 ASP 页面,然后单击属性
8. 单击自定义错误。在列表中,查找 500;100 的项。默认情况下,该项被设置为一个 URL 并引用 Help/Common/500-100.asp。单击编辑属性
9. 修改路径,使其指向 /IISHelp/Common/500-100-OK.asp,单击确定,然后再次单击确定

给 Alpha 或 UNIX 上的文件分配类别时

给 Alpha 或 UNIX 上的文件分配类别时,会收到一个 HTTP 500 错误信息。

要解决此问题,请安装 Microsoft Office 2000 Service Release 1 (SR-1) 或 Service Release 1a (SR-1a)。要下载 Office 2000 SR-1,请参见下面的 Microsoft Web 站点:
http://office.microsoft.com/downloads/2000/O2kSR1DDL.aspx (http://office.microsoft.com/downloads/2000/o2ksr1ddl.aspx)

将 500-100.asp 文件用于非默认 Web 站点上的错误处理时

将 500-100.asp 文件用于非默认 Web 站点上的错误处理时,会收到一个 HTTP 500 错误信息。

要解决此问题,请按以下步骤操作:
1. 在“Internet 信息服务”管理单元的控制台树中,右键单击相应的 Web 站点,单击新建,然后单击虚拟目录
2. 在“虚拟目录创建向导”中,单击下一步。在别名文本框中,键入 IISHelp,然后单击下一步
3. 当提示您输入内容文件夹的路径时,单击浏览,选择 WINNT\Help\IisHelp 文件夹,然后单击下一步
4. 访问权限页面中,接受所有默认值,单击下一步,然后单击完成
5. 再次右键单击 Web 站点,然后单击属性
6. 自定义错误选项卡中,选择 "500;100" 错误行,然后单击编辑属性
7. 信息类型列表框的 URL 文本框中,键入 /iisHelp/common/500-100.asp
8. 单击确定,然后再次单击确定

在索引服务器中执行查询时

单击 Go在索引服务器中执行查询时,可能会收到一个 HTTP 500 错误信息。

出现此错误的原因是,没有为包含查询页面的文件夹定义默认的应用程序起始点。

要解决此问题,请按以下步骤操作:
1. 在“Internet 信息服务”管理单元的控制台树中,右键单击包含查询页面的站点的根目录,然后单击属性
2. 主目录选项卡中,单击创建
3. 单击确定,然后重试查询。

从 ASP 页面中访问提供程序时

如果清除了 显示友好 HTTP 错误信息复选框,当您尝试从 ASP 页面中访问提供程序时,可能会收到以下错误信息:
ADODB.Connection (0x800A0E7A) Provider cannot be found.It may not be properly installed./Nwind.asp, line 10
出现此错误的原因是,Microsoft 数据访问组件 (MDAC) 所需的动态链接库 (DLL) 尚未注册。
1. 单击开始,单击运行,然后键入 cmd
2. 在命令提示符下,键入 cd %systemroot%:\Program Files\Common Files\System\Ole
3. 在命令提示符下,键入 regsvr32 sqloledb.dll
4. 收到 DLL 成功注册的确认后,单击确定注意:此解决方案使用了 Microsoft SQL Server OLE Provider DLL (Sqloledb.dll) 作为示例。由于未注册的 DLL 可能会因使用的 OLE DB 提供程序而异,所以您必须根据具体情况修改第 2 步。

在 IIS 5.0 上设置 COM+ 应用程序标识时

当您尝试在 IIS 5.0 上设置 COM+ 应用程序标识时,会收到一个 HTTP 500 错误信息。

当 COM+ 应用程序或 Microsoft Transaction Server (MTS) 程序包的标识被配置为 交互式用户 - 当前已登录的用户时,会出现此问题。由于当前没有用户登录到 IIS 控制台,所以应用程序无法运行。

要解决此问题,请将 COM+ 应用程序或 MTS 程序包的标识设置为 此用户,然后指定一个用户帐户。为此,请按以下步骤操作:
1. 单击开始,指向程序,指向管理工具,然后单击组件服务
2. 在控制台树中,依次展开组件服务计算机我的电脑COM+ 应用程序。查找希望更改其标识的应用程序。
3. 右键单击相应的 COM+ 应用程序,然后单击属性
4. 标识选项卡中,单击此用户,键入一个有效的计算机帐户,然后单击确定

在 IIS 4.0 上设置 MTS 应用程序标识时

当您在 IIS 4.0 上设置 MTS 程序标识时,会收到一个 HTTP 500 错误信息。

要解决此问题,请按以下步骤操作:
1. 在“Internet 信息服务”管理单元中,依次展开计算机我的电脑Microsoft Transaction Server。查找希望更改其标识的程序包。应用程序列在“已安装的应用程序包”文件夹中。
2. 右键单击该程序包,然后单击属性
3. 标识选项卡中,单击此用户,键入一个有效的帐户,然后单击应用

IIS 4.0 在自己的内存空间中运行时

如果满足以下任一条件,就会收到 HTTP 500 错误信息:
IIS 4.0 的默认 Web 站点作为一个独立的进程在自己的内存空间中运行。
Microsoft Internet Explorer 被配置为在 Proxy Server 2.0 上使用 Web 代理服务器。
BackOffice Small Business Server 4.5 版上的 Internet Explorer 被配置为使用代理服务器,并且启用了代理服务器数据包筛选。
要解决此问题,请按以下步骤操作:
1. 单击开始,指向程序,单击 Microsoft Proxy Server,然后单击 Microsoft 管理控制台
2. 在控制台树中,展开 Internet Information Server 文件夹,然后展开服务器对象。
3. 右键单击默认 Web 站点,然后单击属性
4. 主目录选项卡中,找到应用程序设置区域,然后单击以清除在单独的内存空间运行(独立进程)
5. 单击应用,然后单击确定
6. 右键单击默认 Web 站点,然后单击停止
7. 右键单击默认 Web 站点,然后单击启动