A few days ago, I helped a client to solve a problem they had when they deployed an ASP.NET MVC 2 application. In a previous post, I wrote about how you can install a production server in order to run ASP.NET MVC 2 application. The client team has installed the server according to the
AspNetMVC2 MSI installer section (in my post) and then they used Phil Haack’s IIS6 Extension-less URLs solution to enable the routing engine. Life was beautiful and they were on the right track.
running the application produced the “page cannot be found” page:
This made them and me scratch our heads. So the first thing to do in such cases is to check the IIS log file which can be very helpful by holding the error code which was 404.2. While Googling the net, we found the Getting an ASP.NET 4 application to work on IIS6 post by Johan Driessen which holds the solution. Apparently, when you install .NET 4 on Windows Server 2003 with IIS6, the .NET 4 ASP.NET ISAPI extension is installed disabled…
By using the following command through the command line, you can check whether the ISAPI is enabled:
cscript iisext.vbs /ListFile
If you find out that the status for the .NET 4 ASP.NET ISAPI extension is 0, then in order to enable it, you will need to run the following command in the command line:
cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
You need to run both of the previous commands in <WINDOWS DIR>/System32.
That solved the client’s problems and the application is running on the production server now.