I ran into an issue this evening and wanted to document it for my own future reference and anyone else who might run into the problem. I had installed ASP.NET 4 onto a Windows 2003 64 bit server. I uploaded a test version of an application that is a port of an existing application converted to take advantage of some of the new features of .NET 4. After loading the application and setting it as an application I noticed that the ASP.NET tab where one would normally change the version wasn’t there.
After some false starts, I came across this blog post which describes much the same issue though my server was not running on VMWare, but another virtualization system. The fix it suggests is:
- Stop IIS
- Edit the MetaBase.XML file in %WINDIR%system32inetsrv to remove a line reading
Enable32BitAppOnWin64="TRUE"
- Start IIS
I did this and the tab did appear, but the result caused more problems that it solved. Several components on the web site refused to load under 64 bit only and as a result the server was useless. After changing the settings back to where they had been to start I looked some more and found another blog post that gave an alternative solution to “manually” change the version on a directory using the aspnet_regiis tool. To do this you use the –s or –sn options along with the path of the application. The path is not the path to the application on disk, but a application path that goes something like W3SVC/[x]/ROOT/AppPath where [x] is the number of the web site (shown on the listing of all the web sites in the IIS Manager) and the AppPath is the path from the root of the site to the application you want to set. The difference between the two options is that –s applies the change to the path you specify and any applications located below it while –sn only changes the settings of the application at the path and does not affect applications below it.
A good note is that an MVC 2 application no longer requires the wildcard mapping “hack” under IIS 6 with ASP.NET 4. Also make sure to allow ASP.NET 4 in the Extensions for your new web application to work too.