Freigeben über


Bereitstellen einer ASP.NET Webanwendung mit SQL Server Compact mit Visual Studio oder Visual Web Developer: Festlegen von Ordnerberechtigungen - 6 von 12

Von Tom Dykstra

Startprojekt herunterladen

In dieser Reihe von Lernprogrammen erfahren Sie, wie Sie ein ASP.NET Webanwendungsprojekt bereitstellen (veröffentlichen), das eine SQL Server Compact-Datenbank mit Visual Studio 2012 RC oder Visual Studio Express 2012 RC für Web enthält. Sie können Visual Studio 2010 auch verwenden, wenn Sie das Web Publish Update installieren. Eine Einführung in die Reihe finden Sie im ersten Lernprogramm in der Reihe.

Ein Lernprogramm, das Bereitstellungsfeatures zeigt, die nach der RC-Version von Visual Studio 2012 eingeführt wurden, zeigt, wie Sie andere SQL Server-Editionen als SQL Server Compact bereitstellen und wie Sie in Azure App Service Web Apps bereitstellen, siehe ASP.NET Web Deployment mit Visual Studio.

Ü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) 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:

Error_page_Test

Führen Sie nun Elmah.axd aus, um den Fehlerbericht anzuzeigen. Es wird eine leere Fehlerprotokollseite angezeigt, da Elmah keine XML-Datei im Ordner "Elmah " erstellen konnte:

Fehlerprotokollseite_leer

Festlegen der Schreibberechtigung für den Elmah-Ordner

Sie können Ordnerberechtigungen manuell festlegen oder sie zu einem automatischen Teil des Bereitstellungsprozesses machen. Es automatisch zu machen erfordert komplexen MSBuild-Code, und da Sie dies nur beim ersten Bereitstellen tun müssen, zeigt dieses Tutorial nur, wie es manuell durchgeführt wird. (Informationen dazu, wie Sie diesen Teil des Bereitstellungsprozesses machen, finden Sie unter Festlegen von Ordnerberechtigungen im Web Publish im Blog von Sayed Hashimi.)

Navigieren Sie im Windows-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.

Elmah_Ordner_Eigenschaften_Sicherheit_Tab

(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 auf Bearbeiten. Aktivieren Sie im Dialogfeld Berechtigungen für ElmahDefaultAppPool das Kontrollkästchen Schreiben in der Spalte Zulassen.

Berechtigungen_für_Elmah_Dialogfenster

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_Error_Log_page_Test

Außerdem benötigen Sie Schreibberechtigungen für den ordner App_Data , da Sie über SQL Server Compact-Datenbankdateien in diesem Ordner verfügen und Daten in diesen Datenbanken aktualisieren möchten. In diesem Fall müssen Sie jedoch nichts zusätzliches tun, da der Bereitstellungsprozess automatisch Schreibberechtigungen für den ordner App_Data festlegt.

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 für einen Hostinganbieter 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.