401 – Unauthorized On Server 2008 R2 IIS 7.5

iis-7.5windows-server-2008-r2

I have a web application deployed to Server 2008 IIS 7.5 box.

From remote it gives this error: 401 - Unauthorized: Access is denied due to invalid credentials. (remote = desktops on the same LAN)

Have tried several remote clients using different browsers, all the same result. (IE, FF, and Chrome)

Hitting the application from the desktop of the server itself works flawlessly. However I have not tried Firebug on the server desktop. I would assume it's still issuing a 401 status code yet returning the content anyway. See Update #2.

The application is using Anonymous Authentication.

The application is written in .NET 4.0 Asp.Net using the MVC framework.

Static content works fine, example: http://server.com/content/image.jpg

Sysinternals procmon returns these 2 results for each request: FAST IO DISALLOWED and PATH NOT FOUND.

I have 2 other MVC apps running fine on the same server. I have checked the security on the folders and they all match.

App runs fine on a Server 2008 IIS 7.0 box.

Nothing shows up in the Event log on the server related to this.

Pulling my hair out here, any troubleshooting tips?

UPDATE #1: This just get's more WTF as I dig.

If I click on the Application in IIS Manager -> Error Pages -> Edit Feature Settings select Detailed Errors, the app works remotely. Not leaving this on, so problem is not solved yet, its just more confusing.

UPDATE #2: Using Firebug, I see that the Status is still 401 Unauthorized, but the Response is returning the application's correct HTML.

UPDATE #3 Playing around with Failed Request Tracing, here is the WARNING Request Trace that is causing the 401:

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

Update #4 Regular IIS log is showing this:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414

Best Answer

Sometimes you have to take a step back... The cause of this was I had a Html.RenderAction() in my view that called an action method that was marked with the [Authorize] attribute.