Running classic asp applications under Windows Server 2008 R2 (x64) and IIS 7 is not as easy as one may think. It took me a while to figure it out while getting error 8002801d a few times.
After you install the OS you will need to install the following server features.
- IIS6 Management Compatibility
- IIS Management Console
- ISAPI Extentions
You will also need Procmon
We need to register ASP.DLL and to do this we need to run the following from the command line:
This will register the Classic ASP library in IIS 7
We need to configure the App Pool we are using to Enable 32 Bit Applications. This can be done by running the following from the command prompt:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true
Now you should create a test.asp file in order to test if ASP has been properly registered.
I've used this code:
Response.Write "This is the new www5"
This was throwing me the following error
This is the new www5 error '8002801d'
/test.asp, line 4
Here is where Procmon and Pstools come to work. Procmon is a really handy application which will help you trace any process that is running on the system. While using Procmon with a filter on all Registry access I managed to see the Registry Key where I was getting Access Denied.
If I run regedt32 on Windows Server 2008 R2 I get access denied on that Registry Key, so we need psexec to be able to edit the registry security on that Key and add the IIS USR.
psexec -s -i regedt32
That opens regedt32 without having any access denied popups and added the IIS USR to that key.
One more thing as good practice is to enable Parent Paths. This is disabled by default on IIS 7.
To enable them:
- open IIS Manager and navigate to the site or application where you want to configure parent paths, and then-double click the ASP feature.
- In the list of ASP features, configure the Enable Parent Paths option. Set that to True.
Another way to enable it is running the following command from a command prompt:
appcmd.exe set config "Default Web Site" -section:system.webServer/asp /enableParentPaths:"False" /commit:apphost
Last thing left to do is restart IIS and now you should be running Classic ASP on IIS 7 under Windows Server 2008 R2 64 Bit