FIX:ASP.NET 在域控制器上使用默认 ASPNET 帐户不能正常运行

文章翻译 文章翻译
文章编号: 315158 - 查看本文应用于的产品
本文的发布号曾为 CHS315158
展开全部 | 关闭全部

症状

在域控制器或备份域控制器上安装 Microsoft Visual Studio .NET 或 Microsoft .NET Framework 后,如果您尝试运行 ASP.NET 应用程序,则浏览器会显示下面的错误消息:
服务器应用程序不可用

您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。

请点击 Web 浏览器中的“刷新”按钮重试您的请求。
此外,系统应用程序事件日志中会记录以下事件:
aspnet_wp.exe could not be launched because the username and/or password supplied in the processModel section of the config file are invalid.
aspnet_wp.exe could not be started.
HRESULT for the failure: 80004005
此问题涉及 Internet Information Services (IIS) 5.0 版或更高版本。

原因

默认情况下,为了提供更安全的环境,ASP.NET 用权限较弱的帐户(名为 ASPNET 的本地计算机帐户)运行其辅助进程 (Aspnet_wp.exe)。在域控制器或备份域控制器上,所有的用户帐户都是域帐户,而不是本地计算机帐户。因此,Aspnet_wp.exe 会由于找不到名为“localmachinename\ASPNET”的本地帐户而无法启动。若要在域控制器上提供有效的用户帐户,必须在 Machine.config 文件的 <processModel> 部分指定显式帐户,或者必须使用 SYSTEM 帐户。

注意:如果在尝试浏览页面之前尝试进行调试(单击“启动”按钮),也会遇到这一问题。

解决方案

要解决此问题,请使用下列方法之一:
  • 创建具有正确权限的弱帐户,然后配置 Machine.config 文件的 <processModel> 部分以使用该帐户。
  • 在 Machine.config 文件的 <processModel> 部分,将 userName 属性设置为 SYSTEM
  • 配置 Machine.config 文件的 <processModel> 部分以使用管理员帐户。
注意:如果允许 ASP.NET 应用程序作为 SYSTEM 或管理员帐户运行,将带来严重的安全问题。如果使用其中的任一种替代方法,在 Aspnet_wp.exe 进程中运行的代码都将有权访问域控制器和域设置。从 Aspnet_wp.exe 进程启动的可执行文件在相同的上下文中运行,它们也有权访问域控制器。

因此,Microsoft 建议使用第一种替代方法。若要使用第一种替代方法,请按照下列步骤操作:
  1. 在计算机上创建名为 ASPUSER 的用户帐户,然后将此帐户添加到用户组中。

    注意:如果更改了 .NET Framework 创建的 ASPNET 帐户的密码,也可以使用该帐户。您必须知道此帐户的密码,因为需要在后面的步骤中将该密码添加到 <processModel> 部分。
  2. 授予 ASPUSER 或 ASPNET 帐户“作为批处理作业登录”用户权限。确保此更改出现在“本地安全策略”设置中。

    注意:若要向此帐户授予“作为批处理作业登录”用户权限,可能必须在以下每一个安全策略中都授予此用户权限(从控制面板/管理工具开始操作):

    • 域控制器安全策略
    • 域安全策略
    • 本地安全策略

    注意:您可能必须重新启动服务器以使这些更改生效。
  3. 确保 ASPUSER 或 ASPNET 帐户有权访问启动 Aspnet_wp.exe 进程和为 ASP.NET 页提供服务所必需的全部目录和文件。 有关必须授予此帐户何种权限的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    317012 ASP.NET 中的进程和请求标识
  4. 打开 Machine.config 文件。该文件的路径是:%Systemroot%\Microsoft.NET\Framework\v1.0.3705\CONFIG。
  5. 在 Machine.config 文件的 <processModel> 部分,将 userNamepassword 属性更改为您在步骤 1 中创建的帐户的名称和密码。例如:
    userName="DomainName\ASPUSER" password="ASPUSERpassword"
  6. 保存对 Machine.config 文件所做的更改。

状态

Microsoft 已经确认这是在“这篇文章中的信息适用于:”部分中列出的 Microsoft 产品中存在的错误。 此错误在 ASP.NET(包括在 .NET Framework 中)1.1 版中得到了纠正。

参考

有关 ASP.NET 安全性的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306590 INFO:ASP.NET 安全性概述
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
316989 在创建从 ASP.NET 到 SQL Server 的受信任数据连接时出现错误消息:“Login failed for user: 'AccountName'”(用户 'AccountName' 登录失败)
329290 如何使用 ASP.NET 工具加密凭据和会话状态连接字符串
317012 ASP.NET 中的进程和请求标识

属性

文章编号: 315158 - 最后修改: 2008年1月30日 - 修订: 5.4
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Mobile Internet Toolkit 1.0
关键字:?
kbproductlink kbfix kbbug kbconfig kbhttpruntime kbreadme kbsecurity KB315158
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com