Freigeben über


ASP.NET Webbereitstellung mit Visual Studio: Festlegen von Ordnerberechtigungen

Von Tom Dykstra

Startprojekt herunterladen

In dieser Lernprogrammreihe wird gezeigt, wie Sie eine ASP.NET Webanwendung mit Azure App Service Web Apps oder einem Drittanbieter mit Visual Studio 2012 oder Visual Studio 2010 bereitstellen (veröffentlichen). Informationen zur Reihe finden Sie im ersten Lernprogramm in der Reihe.

Übersicht

In diesem Lernprogramm legen Sie Ordnerberechtigungen für den Ordner "Elmah " auf der bereitgestellten Website fest, damit die Anwendung Protokolldateien in diesem Ordner erstellen kann.

Wenn Sie eine Webanwendung in Visual Studio mit dem Visual Studio Development Server (Cassini) oder IIS Express testen, wird die Anwendung unter Ihrer Identität ausgeführt. Sie sind wahrscheinlich ein Systemadministrator auf Ihrem Entwicklungscomputer und verfügen über uneingeschränkte Berechtigungen, beliebige Dateien in einem beliebigen Ordner zu verwalten. Wenn eine Anwendung jedoch unter IIS ausgeführt wird, wird sie unter der identität ausgeführt, die für den Anwendungspool definiert ist, dem die Website zugewiesen ist. Dies ist in der Regel ein systemdefiniertes Konto mit eingeschränkten Berechtigungen. Standardmäßig verfügt sie über Lese- und Ausführungsberechtigungen für die Dateien und Ordner Ihrer Webanwendung, hat jedoch keinen Schreibzugriff.

Dies wird zu einem Problem, wenn Ihre Anwendung Dateien erstellt oder aktualisiert, was in Webanwendungen häufig erforderlich ist. In der Anwendung Contoso University erstellt Elmah XML-Dateien im Ordner "Elmah ", um Details zu Fehlern zu speichern. Selbst wenn Sie etwas wie Elmah nicht verwenden, kann Ihre Website Benutzern das Hochladen von Dateien oder andere Aufgaben ermöglichen, die Daten in einen Ordner auf Ihrer Website schreiben.

Erinnerung: Wenn Beim Durchlaufen des Lernprogramms eine Fehlermeldung angezeigt wird oder etwas nicht funktioniert, überprüfen Sie unbedingt die Problembehandlungsseite.

Testen der Fehlerprotokollierung und Berichterstellung

Um zu sehen, wie die Anwendung in IIS nicht ordnungsgemäß funktioniert (obwohl sie beim Testen in Visual Studio ausgeführt wurde), können Sie einen Fehler verursachen, der normalerweise von Elmah protokolliert wird, und dann das Elmah-Fehlerprotokoll öffnen, um die Details anzuzeigen. Wenn Elmah keine XML-Datei erstellen und die Fehlerdetails speichern konnte, wird ein leerer Fehlerbericht angezeigt.

Öffnen Sie einen Browser, und wechseln Sie zu http://localhost/ContosoUniversity, und fordern Sie dann eine ungültige URL wie Studentsxxx.aspx an. Es wird eine vom System generierte Fehlerseite anstelle der GenericErrorPage.aspx Seite angezeigt, da die customErrors Einstellung in der Web.config Datei "RemoteOnly" lautet und Sie IIS lokal ausführen:

HTTP 404-Fehlerseite

Führen Sie nun Elmah.axd aus, um den Fehlerbericht anzuzeigen. Nachdem Sie sich mit den Anmeldeinformationen des Administratorkontos ("admin" und "devpwd") angemeldet haben, wird eine leere Fehlerprotokollseite angezeigt, da Elmah im Ordner "Elmah " keine XML-Datei erstellen konnte:

Fehlerprotokoll leer

Festlegen der Schreibberechtigung für den Elmah-Ordner

Sie können Ordnerberechtigungen manuell festlegen oder sie zu einem automatischen Teil des Bereitstellungsprozesses machen. Um dies automatisch zu machen, ist komplexer MSBuild-Code erforderlich. Da dies jedoch nur beim ersten Bereitstellen erforderlich ist, führen Sie die folgenden Schritte manuell aus. (Informationen dazu, wie Sie diesen Teil des Bereitstellungsprozesses machen, finden Sie unter Festlegen von Ordnerberechtigungen im Web Publish im Blog von Sayed Hashimi.)

  1. Navigieren Sie im Datei-Explorer zu C:\inetpub\wwwroot\ContosoUniversity. Klicken Sie mit der rechten Maustaste auf den Ordner "Elmah ", wählen Sie "Eigenschaften" aus, und wählen Sie dann die Registerkarte " Sicherheit " aus.

  2. Klicken Sie auf Bearbeiten.

  3. Aktivieren Sie im Dialogfeld Berechtigungen für ElmahDefaultAppPool das Kontrollkästchen Schreiben in der Spalte Zulassen.

    Berechtigungen für DEN ELMAH-Ordner

    (Wenn "DefaultAppPool " in der Liste " Gruppen" oder "Benutzernamen " nicht angezeigt wird, haben Sie wahrscheinlich eine andere Methode als die in diesem Lernprogramm angegebene Methode verwendet, um IIS und ASP.NET 4 auf Ihrem Computer einzurichten. In diesem Fall erfahren Sie, welche Identität vom Anwendungspool verwendet wird, der der Contoso University-Anwendung zugewiesen ist, und erteilen Sie dieser Identität Schreibberechtigungen. Links zu Anwendungspoolidentitäten finden Sie am Ende dieses Lernprogramms.) Klicken Sie in beiden Dialogfeldern auf "OK ".

Erneutes Testen der Fehlerprotokollierung und -berichterstellung

Testen Sie, indem Sie einen Fehler erneut auf die gleiche Weise verursachen (eine ungültige URL anfordern), und führen Sie die Fehlerprotokollseite aus. Dieses Mal wird der Fehler auf der Seite angezeigt.

ELMAH-Fehlerprotokollseite

Zusammenfassung

Sie haben nun alle erforderlichen Aufgaben abgeschlossen, um Contoso University korrekt auf Ihrem lokalen Computer unter IIS zu betreiben. Im nächsten Lernprogramm stellen Sie die Website öffentlich zur Verfügung, indem Sie sie in Azure bereitstellen.

Weitere Informationen

In diesem Beispiel war der Grund, warum Elmah keine Protokolldateien speichern konnte, ziemlich offensichtlich. Sie können die IIS-Ablaufverfolgung in Fällen verwenden, in denen die Ursache des Problems nicht so offensichtlich ist; siehe Problembehandlung bei fehlgeschlagenen Anforderungen mithilfe der Ablaufverfolgung in IIS 7 auf der IIS.net-Website.

Weitere Informationen zum Erteilen von Berechtigungen für Anwendungspoolidentitäten finden Sie unter Anwendungspoolidentitäten und sichere Inhalte in IIS über Dateisystem-ACLs auf der IIS.net-Website.