In Visual Studio my project builds and runs with no problem. When deploying to Windows Server 2012 R2 I encounter the following error:
A default document is not configured for the requested URL, and directory browsing is not enabled on the server.
I have installed all 4.5 and other Roles and Profiles
, have given permission to the folder to everyone and have read every article and tried to implement every suggestion to no avail..
I'm out of options, spent weeks on this and cannot understand how this is so convoluted just to deploy a site.. Can someone advise? Thanks
Edit - this is for Windows Server 2012 and I have tried suggested alternatives such as adding runAllManagedModulesForAllRequests
to my web.config.
Edit When deploying I build the solution in Release mode and copy the bin, views, content and scripts folders over to Windows Server. In IIS I then make the folder an application, making sure a 4.0 App Pool is assigned and still receive the error.
Final Edit Publish allowed me to see the structure that needed to be copied over. There were also 3 dll's that needed to be copied local from Visual Studio:
- System.Web.Http.dll
- System.Web.Http.WebHost.dll
- System.Net.Http.Formatting.dll
As well as Web.Config dependentAssembly updated to take into account some MVC4 dll's such as Unity.Mvc4 pointing to MVC3 binaries.
This error message gives a clue as to the problem. MVC sites do not rely on documents or web pages in the way that WebForms do, the default mode for IIS. They depend on a special handler that deals with the RESTful urls used to pass requests to your application.
In your web.config file, check that the following config is present in the system.webServer section:
Then on your web server, open the IIS Manager, navigate in the Connections panel on the LHS to the node that represents your application, then double-click on the Handler Mappings icon in the Features View tab. Check that the ExtensionlessUrlHandler-Integrated-4.0 handler is enabled (see below).
If that doesn't do the trick, double-check that you have the ASP.NET 4.5 Role enabled on the server. See http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-using-aspnet-35-and-aspnet-45#TOC301258515 for instructions.
Also make sure you application is running under an AppPool that is configured for .NET 4.0.