IIS8 Default Document yields 404 not found error

Jim Birchall picture Jim Birchall · Oct 15, 2012 · Viewed 15.4k times · Source

I have a new Windows Server 2012 machine with IIS 8. I have installed an application that uses Windows Authentication for the login page. The application uses .NET 2.0 (which was a bit of a pain to configure, but that is a different story) The application works perfectly if you specify the login page in the URL. This login page is the default document for the application which verifies the user and logs them in automatically if they are registered. If they are not registered then it redirects them to a Forms authentication login page where they can enter local application credentials.

The problem I have is that the login page only works when you browse to it directly I.E. type the name in the URL. If you use the Default document from IIs it returns a 404 error.

I have seen other articles here which are for IIS 7 or IIS 7.5 which appear on the surface to be the same as IIS 8 but the solutions for those problems do not resolve my problem.

The application pool is currently configured as Classic (have also tried Integrated) and uses NetworkService as the application Account and has 32 bit enabled. It is configured for .NET Framework v2.0. Default documents are enabled for both the site and the application virtual directory.

Answer

Jim Birchall picture Jim Birchall · Oct 16, 2012

I think I have solved this problem. IIS 8 does not seem to respect the order of documents in the list of default documents and was always selecting default.aspx which was shown as the last document in the list.
My main application does not have a default.aspx page. When I removed all the entries in the list of default documents so that only the one and only document I needed for the main application was shown it worked correctly. This is a bit of a pain as my application has lots of sub-applications that use different landing pages. One of which uses default.aspx. We usually specified them all at the top level and used inheritance on the sub-applications, but now it seems each sub-application will need to be configured individually.