Ich habe eine Webanwendung für Server 2008 IIS 7.5 bereitgestellt.
Von Remote gibt es diese Fehlermeldung: 401 - Unauthorized: Access is denied due to invalid credentials
. (remote = Desktops im selben LAN)
Habe mehrere Remote-Clients mit unterschiedlichen Browsern ausprobiert, alle das gleiche Ergebnis. (IE, FF und Chrome)
Das Schlagen der Anwendung vom Desktop des Servers aus funktioniert einwandfrei . Allerdings habe ich Firebug auf dem Server-Desktop nicht ausprobiert. Ich würde davon ausgehen, dass es immer noch einen 401-Statuscode ausgibt und trotzdem den Inhalt zurückgibt. Siehe Update Nr. 2.
Die Anwendung verwendet die anonyme Authentifizierung.
Die Anwendung wurde unter Verwendung des MVC-Frameworks in .NET 4.0 Asp.Net geschrieben.
Statischer Inhalt funktioniert einwandfrei, Beispiel: http://server.com/content/image.jpg
Sysinternals procmon
gibt diese 2 Ergebnisse für jede Anforderung zurück: FAST IO DISALLOWED und PATH NOT FOUND.
Ich habe 2 andere MVC-Apps, die problemlos auf demselben Server ausgeführt werden. Ich habe die Sicherheit der Ordner überprüft und sie stimmen alle überein.
App läuft gut auf einem Server 2008 IIS 7.0-Box.
Im Ereignisprotokoll auf dem damit verbundenen Server wird nichts angezeigt.
Hast du irgendwelche Tipps zur Fehlerbehebung?
UPDATE # 1 : Das wird nur mehr WTF, wenn ich grabe.
Wenn ich im IIS-Manager auf Anwendung -> Fehlerseiten -> Funktionseinstellungen bearbeiten klicke Detailed Errors
, funktioniert die App remote. Wenn Sie dies nicht aktiviert lassen, ist das Problem noch nicht gelöst. Es ist nur verwirrender.
UPDATE 2 : Unter Verwendung von Firebug sehe ich, dass der Status noch immer angezeigt wird 401 Unauthorized
, die Antwort jedoch den korrekten HTML-Code der Anwendung zurückgibt.
UPDATE Nr. 3 : Hier ist die WARNING-Anforderungsverfolgung, die den 401 verursacht:
ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401
HttpReason Unauthorized
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode The operation completed successfully. (0x0)
Das regelmäßige IIS-Protokoll von Update Nr. 4 zeigt Folgendes:
#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
quelle
Html.RenderAction
, dann wurdeHtml.Action
mir klar, dass Razor meine ersten Suchanfragen nicht ausgeführt hat.Antworten:
Manchmal muss man einen Schritt zurücktreten ... Die Ursache dafür war
Html.RenderAction()
meiner Meinung nach, dass ich eine Aktionsmethode aufgerufen habe, die mit dem[Authorize]
Attribut markiert war .quelle
Da es lokal aber nicht remote funktioniert, klingt es für mich so, als ob das anonyme Benutzerkonto keinen Zugriff auf etwas hat, Ihr Windows-Benutzer jedoch. Um dies zu beweisen, deaktivieren Sie die Windows-Authentifizierung für die Website und prüfen Sie, ob sie lokal fehlerhaft ist.
Was auch immer kaputt geht, wird wahrscheinlich als Ihre Website-Identität anstatt als Ihre App-Pool-Identität ausgeführt, andernfalls würde es lokal und remote kaputt gehen. Wenn Sie 1: 1-Zuordnungen von Websites zu App-Pools haben oder eine sehr vertrauenswürdige Umgebung haben, empfiehlt es sich, das anonyme Benutzerkonto für die Verwendung der App-Pool-Identität festzulegen. Dann brauchen Sie sich keine Sorgen um einen zweiten Benutzer zu machen.
Sie haben Process Explorer erwähnt. Das ist gut, um laufende Informationen zu finden, aber das Tool, das wahrscheinlich Fehler bei der Zugriffsverweigerung aufdeckt, ist processmon (auch von sysinternals). Probieren Sie es aus, wiederholen und erfassen Sie es und suchen Sie dann nach dem Wort "verweigert". Es sollte alle Probleme mit verweigertem Zugriff auf der Festplatte auftauchen.
quelle
Sie werden dasselbe Verhalten haben, wenn Sie einen Filter für die benutzerdefinierte Autorisierung haben, der von
AuthorizeAttribute
und einem oder mehreren Aufrufen vonOnAuthorization
method erbt , wobei einer von ihnenAuthorizationContext.Result
auf `HttpUnauthorizedResult 'gesetzt ist.quelle
Aus irgendeinem Grund hat dies mein Problem behoben.
quelle
Haben Sie die Einstellungen unter Autorisierungsregeln überprüft? Wenn jemand auf diese Seite zugreifen kann (was anscheinend Ihr Ziel ist), stellen Sie sicher, dass Sie eine "Zulassen" -Regel haben, die "Alle Benutzer" in der Benutzerspalte enthält.
Stellen Sie dann unter "Authentifizierung" sicher, dass keine Konflikte vorliegen und nur die anonyme Authentifizierung aktiviert ist.
Hoffentlich hilft das.
quelle