ASP.NET Webbereitstellung mit Visual Studio: Festlegen von Ordnerberechtigungen

von Tom Dykstra

Starter-Projekt herunterladen

In dieser Tutorialreihe erfahren Sie, wie Sie mithilfe von Visual Studio 2012 oder Visual Studio 2010 eine ASP.NET Webanwendung für Azure App Service Web-Apps oder für einen Hostinganbieter eines Drittanbieters bereitstellen (veröffentlichen). Informationen zur Reihe finden Sie im ersten Tutorial der Reihe.

Überblick

In diesem Tutorial 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 höchstwahrscheinlich Administrator auf Ihrem Entwicklungscomputer und haben die volle Autorität, alles mit jeder Datei in einem beliebigen Ordner zu tun. 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 der Standort zugewiesen ist. Dies ist in der Regel ein systemdefiniertes Konto mit eingeschränkten Berechtigungen. Standardmäßig verfügt es über Lese- und Ausführungsberechtigungen für die Dateien und Ordner Ihrer Webanwendung, verfügt jedoch über keinen Schreibzugriff.

Dies wird zu einem Problem, wenn Ihre Anwendung Dateien erstellt oder aktualisiert, was in Webanwendungen häufig erforderlich ist. In der Contoso University-Anwendung erstellt Elmah XML-Dateien im Ordner Elmah , um Details zu Fehlern zu speichern. Auch wenn Sie nicht so etwas wie Elmah verwenden, können Benutzer dateien hochladen oder andere Aufgaben ausführen, die Daten in einen Ordner auf Ihrer Website schreiben.

Erinnerung: Wenn Sie eine Fehlermeldung erhalten oder etwas nicht funktioniert, während Sie das Tutorial durchlaufen, überprüfen Sie unbedingt die Problembehandlungsseite.

Testen der Fehlerprotokollierung und -berichterstellung

Um zu sehen, wie die Anwendung in IIS nicht ordnungsgemäß funktioniert (obwohl dies beim Testen in Visual Studio der Fall war), 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, wechseln Sie zu http://localhost/ContosoUniversity, und fordern Sie dann eine ungültige URL wie Studentsxxx.aspx an. Anstelle der Seite GenericErrorPage.aspx wird eine vom System generierte Fehlerseite 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 ("administrator" und "devpwd") angemeldet haben, wird eine leere Fehlerprotokollseite angezeigt, da Elmah keine XML-Datei im Ordner Elmah erstellen konnte:

Fehlerprotokoll leer

Festlegen der Schreibberechtigung für den Ordner Elmah

Sie können Ordnerberechtigungen manuell festlegen oder sie zu einem automatischen Teil des Bereitstellungsprozesses machen. Die Automatische Ausführung erfordert komplexen MSBuild-Code, und da Sie dies nur bei der ersten Bereitstellung tun müssen, führen Sie die folgenden Schritte aus, um dies manuell zu tun. (Informationen dazu, wie Sie diesen Teil des Bereitstellungsprozesses machen, finden Sie unter Festlegen von Ordnerberechtigungen für die Webveröffentlichung im Blog von Sayed Hashimi.)

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

  2. Klicken Sie auf Bearbeiten.

  3. Wählen Sie im Dialogfeld Berechtigungen für Elmah die Option DefaultAppPool und dann das Kontrollkästchen Schreiben in der Spalte Zulassen aus.

    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 Tutorial angegebene verwendet, um IIS und ASP.NET 4 auf Ihrem Computer einzurichten. Ermitteln Sie in diesem Fall, welche Identität vom Anwendungspool verwendet wird, der der Contoso University-Anwendung zugewiesen ist, und erteilen Sie dieser Identität Schreibberechtigungen. Sehen Sie sich die Links zu Anwendungspoolidentitäten am Ende dieses Tutorials an.) Klicken Sie in beiden Dialogfeldern auf OK .

Erneutes Testen der Fehlerprotokollierung und -berichterstellung

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

ELMAH-Fehlerprotokollseite

Zusammenfassung

Sie haben nun alle erforderlichen Aufgaben abgeschlossen, damit die Contoso University in IIS auf Ihrem lokalen Computer ordnungsgemäß funktioniert. Im nächsten Tutorial 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. Weitere Informationen finden Sie unter Problembehandlung bei fehlerhaften 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.