Microsoft KB Archive/315158

= FIX: ASP.NET does not work with the default ASPNET account on a domain controller =

Article ID: 315158

Article Last Modified on 12/19/2007

-

APPLIES TO


 * Microsoft ASP.NET 1.0
 * Microsoft Internet Information Services 5.0
 * Microsoft Mobile Internet Toolkit 1.0

-



This article was previously published under Q315158



SYMPTOMS
After you install Microsoft Visual Studio .NET or the Microsoft .NET Framework on a domain controller or on a backup domain controller, if you try to run an ASP.NET application, the browser displays the following error message:

Server Application Unavailable

The web application you are attempting to access on this web server is currently unavailable.

Please hit the &quot;Refresh&quot; button in your web browser to retry your request.

Furthermore, the following event is logged in the system application event log:

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

This applies to Internet Information Services (IIS) version 5.0 or later.



CAUSE
By default, ASP.NET runs its worker process (Aspnet_wp.exe) with a weak account (the local machine account, which is named ASPNET) to provide a more secure environment. On a domain controller or on a backup domain controller, all user accounts are domain accounts and are not local machine accounts. Therefore, Aspnet_wp.exe fails to start because it cannot find a local account named &quot;localmachinename\ASPNET&quot;. To provide a valid user account on the domain controller, you must specify an explicit account in the  section of the Machine.config file, or you must use the SYSTEM account.

Note If you try to debug (click the Start button) before you try to browse to the page you can experience the exact same problem.



RESOLUTION
To work around this problem, use one of the following methods:
 * Create a weak account that has the correct permissions, and then configure the  section of the Machine.config file to use that account.
 * Set the userName attribute to SYSTEM in the  section of the Machine.config file.
 * Configure the  section of the Machine.config file to use an administrator account.

Note Allowing ASP.NET applications to run as SYSTEM or an administrator account has serious security implications. If you use either of these workarounds, code that is run in the Aspnet_wp.exe process will have access to the domain controller and the domain settings. Executable files that are started from the Aspnet_wp.exe process run in the same context and also have access to the domain controller.

Therefore, Microsoft recommends that you use the first workaround. To use the first workaround, follow these steps:  Create a user account on the computer named ASPUSER, and then add this account to the Users group.

Note You can also use the ASPNET account that the .NET Framework created if you change the password on this account. You must know the password on this account because you add the password to the  section later in these steps. Grant the ASPUSER or the ASPNET account the Log on as a batch job user right. Make sure that this change appears in the Local Security Policy settings.

Note To grant the Log on as a batch job user right on this account, you may have to grant this user right in each of the following security policies (From the Control Panel/Administrative Tools):

 Domain Controller Security Policy Domain Security Policy</li> Local Security Policy</li></ul>

Note You may have to reboot the server for these changes to take effect.</li> Make sure that the ASPUSER or the ASPNET account has permission to access all of the necessary directories and files to start the Aspnet_wp.exe process and to serve the ASP.NET pages. For additional information about what permissions you must grant to this account, click the following article number to view the article in the Microsoft Knowledge Base:

317012 Process and request identity in ASP.NET

</li> Open the Machine.config file. The path to the file is: %Systemroot%\Microsoft.NET\Framework\v1.0.3705\CONFIG.</li>  In the <processModel> section of the Machine.config file, change the userName and the password attributes to the name and the password of the account that you created in step 1. For example: userName=&quot;DomainName\ASPUSER&quot; password=&quot;ASPUSERpassword&quot; </li> Save the changes to the Machine.config file.</li></ol>

<div class="status_section">

STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the &quot;Applies to&quot; section. This bug was corrected in ASP.NET (included with the .NET Framework) 1.1.

<div class="references_section">