This article is nothing but a hat tip (HT) to my buddy Ben at work for his awesome work.
Here’s the rundown. There is a server at work that is running Windows Server 2003 x64 with IIS 6 and and .Net 4 Framework. Due to an existing application on the server, IIS has to run in 32bit mode. Ben had recently put a new web application on the server, which needed to use the .Net 4 Framework. Since the server was initially setup with the .Net 2.0 Framework, the new application defaulted to the 2.0 Framework. Typically you can go to the IIS settings for the application and use the ASP.Net tab to re-target the appropriate Framework. But for some reason, when he went into IIS to set the properties on the Virtual Directory/Web Application, the ASP.Net tab was missing.
After a LOT of digging, head beating against the wall, and some good thinking, he wasn’t able to get the tab to appear, but he was able to get the application to retarget the proper framework by doing the following:
1. Open up the command prompt on the server and figure out how IIS is running by executing the following command:
cscript C:\inetpub\adminscripts\adsutil.vbs GET W3SVC/AppPools/Enable32BitAppOnWin64
2. You should see ‘Enable32BitAppOnWin64 : (BOOLEAN) True.’
3 Is the server setup for 32-bit compatibility mode for legacy apps? If not execute the following command:
cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32BitAppOnWin64 True
4. Assuming it has been installed, make sure .Net 4 Framework is registered for ASP.Net by executing:
aspnet_regiis -i
5. Find out what IIS extensions are enabled (0) and disabled (0) by executing teh following command:
C:\Windows\System32 “cscript iisext.vbs /ListFile
6. If the .Net 4 Framework is disabled you will need to run the following command:
cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
and verify that you now see a ‘1’ in the status of the desired Framework.
7. Now navigate to your Framework version folder and run the following command:
aspnet_regiis -lv
to list the status and installation path of all versions of ASP.NET that are installed on the computer. Notice the (Root) note that specifies this is the default Framework.
8. Execute the following command:
aspnet_regiis -lk
to list the path and version of all IIS metabase keys where ASP.NET is mapped.
9. Note in the attached image that the desired application DSMapApp is still targeting the 2.0 framework EVEN THOUGH running aspnet_regiis -i is supposed to switch all apps to the specified Framework.
10. To switch a particular application’s targeted Framework we’ll need the -s switch to Update scriptmaps and application-pool assignments for the specified application and for all sub-applications.:
aspnet_regiis -s W3SVC/1/Root/[AppName]
…and that should do it. The following screen shot below traces the commands executed.
Mad props to you Ben!
Just an addendum – there is a way to get the tab to reappear by setting the Enable32bitAppOnWin64 to false but this really doesn’t help if you’re running IIS in 32-bit compatibility mode (because you wouldn’t be anymore) :P
Thanks for seeding this!!
Thank you SO much for this post. We were having this same problem and I chuckled a little bit when I saw the attached screenshot. We were having this EXACT same problem trying to get ArcGIS and our mapping app to work on IIS6 32-bit.
That worked wonderfully!! Thank You for details.
Excellent, just what I was looking for.
Ohh forgot to ask, what version of the .NET 4 framework did you install. the 32 or 64 bit?
Ugh! To be honest I don’t know what version of the Framework was installed on the server. I’ll have to look into that and get back to you.
what a nice solution it is!i like this solution.but i have gotten a best solution in other browser site.this site below.
In my workstation I have used 32bit PC. There is no problem every this is working nice. But an unexpected situation arise recently when I try to deploy my application in to a 64 bit windows server. I never face this problem before….more
http://aspboss.blogspot.com/
wonderful post.. you made my day.. Thank you so much..
I am trying to deploy asp.net 4.0 (crystal report) website on 64 bit windows server 2003 with IIS 6.0.
This is a web site application not a web project. I get Front page extension error when i deploy my site to this remote server 2003.
I have tried to install FPE and then followed this link to enable IIS on 32 bit but then i can’t see asp.net tab in IIS.
http://support.microsoft.com/kb/891314
I am now able to publish asp.net 4.0 website but can’t see .net tab in IIS.
Hmm, unfortunately I’m a little stuck on what to do in this paticular case. Have you tried going through the steps above now that FPS is working for you?
I’ve been trying to solve this for two hours now, and this stupid little line from step 10 is all I needed.
Just to pay it back a little, for those of you who want to put it into a batch file, just save this as reg40.bat and call it as reg40 (your application name):
C:\windows\microsoft.net\framework\v4.0.30319\aspnet_regiis -s W3SVC/1/Root/%1
exit
Thanks, Sean.
Anything that can be scriptable for easy reuse is always appreciated.
Thanks for paying it back Adam!
Wow! Thank you for posting this solution…. it was driving my nuts!!! Worked for me ;)