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.
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.
This led me to an answer for my situation. Indeed changing the order of the default documents got my index.html working after I moved it to the top of the list. I did not need to truncate the list any further.
However, the reason I was getting the error is I previously had index.aspx at the top and I did indeed have an index.aspx file in the website. But it turns out ASP.Net was not yet installed on the server. So the server returned a very misleading 404 error on the index.aspx (which was actually there) when it should have either ignored it and gone onto my test index.html file, or given me some message that it could not read .aspx file.
We can specify default document in web.config. Specify your default document in web.config and it should work.
来源:https://stackoverflow.com/questions/12899450/iis8-default-document-yields-404-not-found-error