If you manually deploy and ASP.NET MVC application to a windows 2008 Server that has the .NET Framework installed but NOT the actual MVC Tools the server won’t know how to handle and route incoming requests.
There are a number of issues, depending on the version of Visual Studio and patch level you are using.
Older versions of VS simply were not putting all the required DLLs in the bin folder – specifically System.Web.Razor, System.Web.WebPages, System.Web.MVC etc.
So the quick fix (or part of the fix) is the manually add these files to the deployed application. Later Visual Studio SPs actually addressed this issue.
The next problem is that even with these files the server still didn’t know what to do, and therefore the final piece of the puzzle is a web.config change to tell it what to do.
A lot of posts suggest adding the following under <system.webServer>
<modules runAllManagedModulesForAllRequests=”true” />
This will work, however is not really recommended as it handles ALL requests (e.g. html, css, jpg) as apposed to just the cshtml files.
Therefore a better solution is as follows:
<remove name=”UrlRoutingModule-4.0″ />
<add name=”UrlRoutingModule-4.0″ type=”System.Web.Routing.UrlRoutingModule” preCondition=”” />
<!– any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. –>
This is generally considered a far better fix.
Now you just have the usual rights issues to deal with….