ASP不能执行的几种综合解决方法    

在2年前我们一台WIN2000服务器突然不能执行ASP,而其他如HTML能够执行。重装IIS也没有用,检查NTFS权限也没问题。当时情况紧急,很多客户吵着要尽快解决,只能重装WIN2000,反而浪费了很多时间。后来查了查TECHNET,搜集了一些资料,希望有用。

第一种情况:

症状

在您尝试浏览 Internet 信息服务 (IIS) 5.0 Web 服务器的 Active Server Pages (ASP) 内容时,事件查看器系统日志中可能出现以下错误信息:
Event ID:10004; Source:DCOM
DCOM got error "Logon failure:the user has not been granted the requested logon type at this computer." and was unable to logon .\IWAM_MACHINENAME in order to run the Server:{3D14228D-FBE1-11D0-995D-00C04FD919C1}

Event ID:36; Source:W3SVC

The server failed to load application '/LM/W3SVC/1/Root/'.The error was 'The server process could not be started because the configured identity is incorrect.Check the username and password'.

原因

如果 IWAM_MACHINENAME 和 IUSR_MACHINENAME 用户帐户没有"Logon as a batch job"(作为批处理作业登录)的权限,则会发生上述情况。

解决方案

向 IWAM_MACHINENAME 和 IUSR_MACHINENAME 帐户授予"Logon as a batch job"(作为批处理作业登录)的权限。为此,请按照下列步骤操作:
  1. 管理工具菜单上,展开本地安全策略
  2. 选择用户权限指派
  3. 选择 IWAM_MACHINENAMEIUSR_MACHINENAME 帐户。备注:如果定义了域级别的策略设置,它们将替代本地策略设置。确保同时选中了有效的策略设置(此设置显示为浅灰色)。如果此设置未被选中,请与域管理员联系。

第二种情况:

症状

当您浏览现有的 Active Server Pages (ASP) 页时,浏览器可能返回"HTTP 500 - Internal server error"或"Server Application Error"的错误信息。出现这些错误信息之后,如果您查看服务器的系统事件日志,将在其中找到以下两项:
Source:W3SVC
Error:Configured identity is incorrect

-以及-


Source:DCOM
Error:Unable to logon IWAM_ComputerName
如果 为应用程序启用"基本验证",并将"应用程序保护"设置为"低",应用程序将重新开始正常运行。此外,如果在出现该错误之后创建了新的 ASP 应用程序,浏览这一新应用程序时不会发生任何错误。

相关错误信息

您还可能看到以下错误信息:

在浏览器中:
HTTP 500 - Internal server error

-或者-


Server Application Error
The server has encountered an error while loading an application during the processing of your request.Please refer to the event log for more detail information.Please contact the server administrator for assistance.
在系统事件日志中:
Source:DCOM
Error:DCOM got error "Logon Failure:unknown username or bad password" Unable to logon .\IWAM_SERVERNAME in order to run the server.

-以及-


Source:W3SVC
Error:"The server failed to load application '/LM/W3SVC/1/Root/op.'The error was 'The serverprocess could not be started because the configured identity is incorrect.Check the username and password.

-或者-


Source:W3SVC Error:"The server failed to load application '/LM/W3SVC/4/Root'.The error was 'c000003b'."

-以及-


Source:W3SVC Error:"The COM Application '{3D14228D-FBE1-11d0-995D-00C04FD919C1}' at '/LM/W3SVC/4/Root' failed to activate out of process."

原因

IUSR_ 计算机名 和 IWAM_ 计算机名 帐户的用户名和密码存储于以下三个位置:

  • Internet Information Server (IIS) 配置数据库
  • 域用户管理器 (Windows NT) 或本地用户和组 (Windows 2000)
  • Microsoft Transaction Server (Windows NT) 或组件服务 (Windows 2000)
如果这三个位置的用户名和/密码不同步,将出现上述错误信息。

解决方案

若要解决此问题,您必须确保上述三个位置的 IUSR 和 IWAM 帐户密码是同步的。同步方式有两种:在用户管理器 (Windows NT) 或用户和组 (Windows 2000) 中设置 IWAM 和 IUSR 帐户的密码,在 IIS 配置数据库中更改密码,由此而使用相同的密码。或者,在 IIS 配置数据库中设置密码,在用户管理器 (Windows NT) 或用户和组 (Windows 2000) 中更改密码。请使用以下的一种方法来同步密码。

备注:请参阅"更多信息"一节,了解如何使用管理脚本实用工具 (Adsutil.vbs),如何在 Microsoft Transaction Server (MTS) 或组件服务中更改密码。

方法 1:在用户管理器或用户和组中更改密码,使它们与 IIS 配置数据库密码一致

  1. 在"命令"窗口中,找到 Adsutil.vbs 文件所在的文件夹。使用 Adsutil.vbs 工具从 IIS 配置数据库获得 IWAM 和 IUSR 帐户的密码。
  2. 若要在 Windows NT 中更改 IUSR 和/或 IWAM 密码,请按照下列步骤操作:

    1. 开始菜单上,依次指向程序管理工具,然后单击域用户管理器。在"域用户管理器"中,可以更改所有 Windows NT 用户帐户和组的帐户信息。
    2. 双击 IUSR_ 计算机名 和/或 IWAM_ 计算机名 用户,然后修改密码,使它们与第 1 步获得的 IIS 配置数据库密码一致。
    若要在 Windows 2000 中更改 IUSR 和/或 IWAM 密码,请按照下列步骤操作:
    1. 开始菜单上,依次指向程序管理工具,然后单击计算机管理
    2. 系统工具节点下面,单击展开"本地用户和组"和"用户"节点。在"用户"节点中,可以更改所有 Windows 2000 用户帐户和组的帐户信息。
    3. 右键单击 IUSR_ 计算机名和/或 IWAM_ 计算机名帐户,然后单击设置密码
    4. 修改密码,使它们与第 1 步获得的 IIS 配置数据库密码一致。
  3. 浏览返回错误信息的 ASP 页,检查问题是否已解决。

方法 2:更改 IIS 配置数据库密码,使它与 IUSR 和/或 IWAM 密码一致

  1. 若要在 Windows NT 中更改 IUSR 和/或 IWAM 密码,请按照下列步骤操作:

    1. 开始菜单上,依次指向程序管理工具,然后单击域用户管理器。在"域用户管理器"中,可以更改所有 Windows NT 用户帐户和组的帐户信息。
    2. 双击 IUSR_ 计算机名 和/或 IWAM_ 计算机名 帐户,然后键入新密码。
    若要在 Windows 2000 中更改 IUSR 和/或 IWAM 密码,请按照下列步骤操作:
    1. 开始菜单上,依次指向程序管理工具,然后单击计算机管理
    2. 系统工具节点下面,单击展开"本地用户和组"和"用户"节点。在"用户"节点中,可以更改所有 Windows 2000 用户帐户和组的帐户信息。
    3. 右键单击 IUSR_ 计算机名和/或 IWAM_ 计算机名 帐户,然后单击设置密码。键入新密码。
  2. 在"命令"窗口中,找到 Adsutil.vbs 文件所在的文件夹。使用 Adsutil.vbs 实用工具为 IIS 配置数据库中的 IWAM 和 IUSR 帐户设置密码。
  3. 浏览返回错误信息的 ASP 页,检查问题是否已解决。
备注:虽然 Microsoft Transaction Server (Windows NT) 和组件服务 (Windows 2000) 中的密码通常与 IIS 配置数据库中的密码一致,但如果问题仍未解决,则更新 Microsoft Transaction Server (MTS) 或组件服务中的 IWAM 密码。有关更多信息,请参见"更多信息"一节的"如何更改 MTS 或组件服务中的密码"部分。

状态

这种现象是设计使然。

更多信息

如何使用 Adsutil.vbs

IIS 提供了名为 Adsutil.vbs 的脚本文件,用于获取或设置 IIS 配置数据库中的 IUSR 和 IWAM 帐户密码。在 Windows NT 4.0 中,Adsutil.vbs 通常位于 < 驱动器 >\WINNT\System32\Inetsrv\Adminsamples 文件夹。在 Windows 2000,Adsutil.vbs 位于 < 驱动器 >\Inetpub\Adminscripts 文件夹。

下表列出 Adsutil.vbs 实用工具各种功能的语法:

功能语法
获取 IUSR 帐户密码 cscript.exe adsutil.vbs get w3svc/anonymoususerpass
获取 IWAM 帐户密码 cscript.exe adsutil.vbs get w3svc/wamuserpass
设置 IUSR 帐户密码 cscript.exe adsutil.vbs set w3svc/anonymoususerpass "password"
设置 IWAM 帐户密码 cscript.exe adsutil.vbs set w3svc/wamuserpass "password"

备注:在 Windows NT 4.0 中尝试获取密码时,密码显示为明文;但在 Windows 2000 中,密码显示为星号。若要在 Windows 2000 中也让密码显示为明文,必须修改 Adsutil.vbs,使它显示明码。为此,请按照下列步骤操作:
  1. 在记事本中打开 Adsutil.vbs。
  2. 在"编辑"菜单上,单击查找,键入 IsSecureProperty = True,然后单击查找下一个
  3. 将"IsSecureProperty = True"更改为"IsSecureProperty = False"。
  4. 保存对 Adsutil.vbs 所做的更改,然后关闭记事本。

如何更改 MTS 或组件服务中的密码

Windows 2000

IIS 5.0 提供了 Synciwam.vbs 文件,用于更新在进程外运行的所有 IIS COM+ 应用程序包的启动标识。Synciwam.vbs 脚本位于 < 驱动器 >\Inetpub\AdminScripts 文件夹中。您可以使用 CScript 或 WScript 运行 Synciwam.vbs。

若要使用 Synciwam.vbs,请在命令提示符下键入以下命令:
  • cscript.exe synciwam.vbs -v
您可能需要重新启动 IIS,以使所有更改生效。若要重新启动 IIS,请在开始菜单上,单击运行,键入 iisreset,然后单击确定

备注:使用 Synciwam.vbs 后,所有进程外的应用程序("中"和"高"(独立))都将重置为 IWAM_ 计算机名

Windows NT 4.0

IIS 4.0 未提供诸如 Synciwam.vbs 脚本的任何工具。您必须使用 MTS Explorer 为单独的内存进程中运行的每个应用程序手动更改 IWAM 密码。为此,请按照下列步骤操作:
  1. 在 Windows 开始菜单上,依次指向程序Windows NT Option Pack 4,单击 Microsoft Transaction Server,然后单击 Transaction Server Explorer
  2. 在 Transaction Server Explorer 中,单击展开 Microsoft Transaction Server计算机我的计算机已安装的应用程序包节点。
  3. 右键单击已安装的某个应用程序包,然后单击属性
  4. 标识选项卡中,如果该程序包在 IWAM_ 计算机名 用户标识下运行,则键入 IIS 配置数据库中所用的密码,然后单击确定
  5. 对安装的每个程序包重复执行第 3 步和第 4 步。
  6. 重新启动 IIS,以使这些更改生效。为此,请按照下列步骤操作:
    1. 在 Windows 开始菜单中,单击运行,键入 cmd,然后单击确定
    2. 在命令提示符下,依次键入以下命令:
      • net stop iisadmin /y
      • net start w3svc
      • net start msftpsvc (运行 FTP 服务器时使用此命令)
      • net start smtpsvc (运行 SMTP 服务器时使用此命令)
      • net start cisvc (运行索引服务器时使用此命令)

第三种情况:

症状

当您尝试浏览 Active Server Pages (ASP) 页时,浏览器中可能显示以下错误信息:
HTTP 500 - Internal server error
如果在浏览器中清除显示友好 HTTP 错误信息复选框,浏览器中将显示以下错误信息:
Server Application Error
The server has encountered an error while loading an application during the processing of your request.Please refer to the event log for more detail information.Please contact the server administrator for assistance
系统事件日志中也出现与下面类似的错误信息:
Source:DCOM
Event ID:10010
User:NT AUTHORITY\SYSTEM
Description: The server {3D14228D-FBE1-11D0-995D-00C04FD919C1} did not register with DCOM within the required timeout.
在事件日志中,该信息之后还有与下面类似的警告信息:
Source:W3SVC
Event ID:36 User:N/A
Description:The server failed to load application ' AppPath '.The error was 'Server execution failed'.
%SystemRoot%\Iis5.log 文件中也可能出现与下面类似的记录:
OC_ABOUT_TO_COMMIT_QUEUE:Unreg iis_core:FindModules:FindProcessByNameW failed!

原因

NT AUTHORITY\Authenticated Users 或 NT AUTHORITY\INTERACTIVE 项已从用户组删除。

解决方案

将用户添加回用户组,然后重新启动 Internet 信息服务 (IIS):
  1. 依次单击开始程序管理工具计算机管理,打开"计算机管理"控制台。
  2. 在左窗格中,展开本地用户和组,然后单击用户文件夹。
  3. 在右窗格中,右键单击用户组,然后单击属性
  4. 单击添加
  5. 选择用户或组对话框中,找到查找下拉框,然后选择本地计算机。
  6. 选择经过身份验证的用户,然后单击添加。选择 INTERACTIVE,然后单击添加。依次单击确定应用关闭,关闭用户组的属性。
  7. 在左窗格中,展开服务和应用程序,然后单击服务
  8. 在右窗格中,右键单击 IIS 管理服务,然后单击重新启动
  9. 重新启动其他服务确认对话框中,单击

关联文档