Win2000域服务器 IIS 无法使用asp.net程序的解决方法
把一台服务器升级为域控制器后,安装了ASP.NET,配置完IIS后,发现无法运行*.ASPX文件,每次运行都告诉我服务器内部错误,同时会在系统应用程序日志里加上以下2个错误
未能启动 aspnet_wp.exe,原因是配置文件的 processModel 节中提供的用户名和/或密码无效。
未能启动 aspnet_wp.exe。失败的 HRESULT:80004005
*.ASP文件运行正常,请那位高手指点一下,到底是什么问题?
解决的办法有几种,
其中最快但不安全的一种是:
更改machine.config文件,
它位于C:\WINNT\Microsoft.NET\ Framework\v1.0.3705(asp.net 1.0是这样,如果你的版本是1.1的,文件夹名回不同)\CONFIG\,
将里面一个部件<processModel>中的 username的属性设置为SYSTEM,正因为它原来默认的设置为machine,
所以访问的asp.net的用户名为aspnet,而这个帐号为本地帐号,而我们登录的帐号是域控制器的帐号,不是本地机器的帐号,
这样导致aspnet_wp.exe找不到一个本地的localmachinename \aspnet帐号而不能启动.
这种方法我实验过,验证上述情况.但它很不安全,但你发布asp.net网页时,浏览的用户在你的域中是属于system 属性,
这样会带来安全隐患.最好的办法就是,也是微软推荐的.在你的域中添加一个aspnet帐号,设置适当的权限,而不去更改 machine.config文件.
解决方案
要解决此问题,请使用下列方法之一:
• 创建具有正确权限的弱帐户,然后配置 Machine.config 文件的 <processModel> 部分以使用该帐户。
• 在 Machine.config 文件的 <processModel> 部分,将 userName 属性设置为 SYSTEM。
• 配置 Machine.config 文件的 <processModel> 部分以使用管理员帐户。
注意:在 ASP.NET 1.1 中,ASPNET 的进程标识为 IWAM_MachineName,所以不存在此问题。
注意:如果允许 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 INFO:ASP.NET 中的进程和请求标识
4. 打开 Machine.config 文件。该文件的路径是:%Systemroot%\Microsoft.NET\Framework\v1.0.3705\CONFIG。
5. 在 Machine.config 文件的 <processModel> 部分,将 userName 和 password 属性更改为您在第一步中创建的帐户的名称和密码。例如:
userName="DomainName\ASPUSER" password="ASPUSERpassword"
6. 保存对 Machine.config 文件所做的更改。