Warum erhalte ich den Fehler 401.2 / Zugriff verweigert, um meine MVC 3-App unter IIS 7.5 bereitzustellen?

9

Ich versuche, eine ASP.NET MVC 3-Anwendung in einer Windows 2008 R2-Box bereitzustellen. Ich habe den Web Platform Installer ausgeführt, um die MVC 3-Bits und die grundlegenden IIS-Einstellungen zu installieren. Ich habe einen neuen Ordner C: \ Website erstellt, dann eine neue Website erstellt und auf diesen Ordner hingewiesen.

Ich sehe, dass es eine neue App-Pool-Identität "ApplicationPoolIdentity" gibt, die sich von IIS 6 unterscheidet (und ein "spezielles" Benutzerkonto ist, das nicht wirklich auf der Registerkarte Sicherheit des Ordners verfügbar ist). Ich habe dem Ordner "C: \ Website" manuell Berechtigungen erteilt, indem ich den Account "IIS AppPool \ DefaultAppPool" eingegeben habe und den Befehl Read & amp; Ordnerinhalt ausführen / auflisten / Lesezugriff (speziell: Ordner Travers / Datei auslesen, Ordner auflisten / Daten lesen, Attribute lesen, Erweiterte Attribute lesen, Leseberechtigungen).

Der Anwendungspool für diese Website ist für v4 des .NET-Frameworks "Integrierte Pipeline" konfiguriert.

Bei der IIS-Authentifizierung ist die "anonyme Authentifizierung" aktiviert.

Meine Website hat den Authentifizierungsmodus="Windows" in der Datei web.config. Dies ist das erste Mal, dass ich jemals die Windows-Authentifizierung verwendet habe. Wenn es darauf ankommt, ist der Webserver Teil einer Domäne.

Wenn ich versuche, auf die Site zuzugreifen, erhalte ich den Fehler Zugriff verweigert, 401.2. Ich dachte, es könnte mit der Windows-Authentifizierungseinstellung zusammenhängen, also habe ich die web.config geändert und den Authentifizierungsmodus auf None gesetzt. Ich bekomme den gleichen Fehler.

Wenn ich auf die Website, IIS / Authentifizierung und die Windows-Authentifizierung gehe, werde ich aufgefordert, einen Benutzernamen / ein Passwort einzugeben. Wenn ich meine Anmeldeinformationen eingeben, funktioniert es. Allerdings mache ich mir Sorgen, dass es nur funktioniert, weil es mich auf dem Server imitiert (und ich habe Zugriff auf alles). Ich brauche / brauche nicht wirklich Identitätswechsel auf der Website - ich verwende nur die Windows-Authentifizierung, so dass wir nicht zwei Logins verwalten müssen. Die Website überprüft nur die Rollen, in denen der Benutzer Mitglied ist, um Inhalte selektiv anzuzeigen / auszublenden. Auf der Standardseite der Website sind keine [Authorize] -Attribute auf dem Controller festgelegt. ist in der Datei web.config konfiguriert.

Sekundäre Frage - warum würde ich überhaupt nach meinem Benutzernamen / Passwort gefragt werden? Würde die Challenge / Response nicht automatisch erfolgen und nur dann eine Eingabeaufforderung erhalten, wenn die Authentifizierung fehlgeschlagen wäre?

Offensichtlich gibt es hier eine Interaktion, die ich nicht verstehe, aber ich weiß nicht was. Ich sehe keine nützlichen Fehler im Ereignisprotokoll.

Ich habe nach dem Fehler gesucht und einige der Fixes bereits versucht, z. B. habe ich versucht, die ASP.NET-Konfiguration über die Befehlszeile mithilfe von: aspnet_regiis -i ohne Erfolg zurückzusetzen.

Behoben

Ich konnte das funktionieren lassen. Unter der Website-Konfiguration gibt es eine ".NET-Autorisierung" -Option. Dies wurde konfiguriert, um alle anonymen Benutzer zu verweigern. Ich habe diese Regel entfernt und dann eine Regel hinzugefügt, die allen anonymen Benutzern erlaubt. Jetzt konnte ich die Seite ohne Anmeldung betreten. Dann ging ich in die IIS-Authentifizierung und aktivierte die Windows-Authentifizierung und deaktivierte die anonyme Authentifizierung.

Internet Explorer übergibt die Anmeldeinformationen ohne Aufforderung. Firefox fordert zur Eingabe von Anmeldeinformationen auf. Es gibt eine Konfigurationseinstellung, um dies zu konfigurieren:

  • Öffnen Sie Firefox
  • Gehe zu: about: config (und stimme zu)
  • Filter für: network.automatic
  • Doppelklicken Sie auf network.automatic-ntml-auth.trusted-uris
  • Fügen Sie Ihre Website hinzu (mehrere Websites können durch Kommas getrennt sein). Fügen Sie den http: // Teil ein.

Der Computer, auf dem ich teste, hat kein Chrome, aber das scheint auf meinem Entwickler zu funktionieren. Maschine.

    
Paul Mrozowski 31.12.2011, 15:14
quelle

1 Antwort

0

Stellen Sie sicher, dass Ihre Dateisystemberechtigungen korrekt sind. Wenn sie versuchen, entfernen WebMatrix.Data.dll und WebMatrix.WebData.dll im bin-Verzeichnis der Anwendung - das hat den Trick für mich gemacht, erinnere ich mich an die gleichen Probleme.

    
torm 31.12.2011 17:04
quelle