Bereitstellen einer ASP.NET-Webanwendung mit SQL Server Compact mithilfe von Visual Studio oder Visual Web Developer: Bereitstellen in IIS als Testumgebung – 5 von 12
von Tom Dykstra
In dieser Reihe von Tutorials 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 Tutorial der Reihe.
Ein Tutorial mit Bereitstellungsfeatures, die nach der RC-Version von Visual Studio 2012 eingeführt wurden, zeigt, wie SQL Server anderen Editionen als SQL Server Compact bereitgestellt werden, und das Bereitstellen in Azure App Service Web-Apps wird, finden Sie unter ASP.NET Webbereitstellung mit Visual Studio.
Überblick
In diesem Tutorial wird gezeigt, wie Sie eine ASP.NET Webanwendung in IIS auf dem lokalen Computer bereitstellen.
Wenn Sie eine Anwendung entwickeln, testen Sie sie in der Regel, indem Sie sie in Visual Studio ausführen. Standardmäßig bedeutet dies, dass Sie den Visual Studio Development Server (auch als Cassini bezeichnet) verwenden. Der Visual Studio Development Server erleichtert das Testen während der Entwicklung in Visual Studio, funktioniert aber nicht genau wie IIS. Daher ist es möglich, dass eine Anwendung ordnungsgemäß ausgeführt wird, wenn Sie sie in Visual Studio testen, aber fehlschlägt, wenn sie in IIS in einer Hostingumgebung bereitgestellt wird.
Sie können Ihre Anwendung auf folgende Weise zuverlässiger testen:
- Verwenden Sie IIS Express oder vollständigen IIS anstelle von Visual Studio Development Server, wenn Sie während der Entwicklung in Visual Studio testen. Diese Methode emuliert im Allgemeinen genauer, wie Ihre Website unter IIS ausgeführt wird. Diese Methode testt ihren Bereitstellungsprozess jedoch nicht und überprüft nicht, ob das Ergebnis des Bereitstellungsprozesses ordnungsgemäß ausgeführt wird.
- Stellen Sie die Anwendung in IIS auf Ihrem Entwicklungscomputer mithilfe desselben Prozesses bereit, den Sie später für die Bereitstellung in Ihrer Produktionsumgebung verwenden. Diese Methode überprüft Ihren Bereitstellungsprozess und überprüft außerdem, ob Ihre Anwendung unter IIS ordnungsgemäß ausgeführt wird.
- Stellen Sie die Anwendung in einer Testumgebung bereit, die so nah wie möglich an Ihrer Produktionsumgebung liegt. Da die Produktionsumgebung für diese Tutorials ein Hostinganbieter eines Drittanbieters ist, wäre die ideale Testumgebung ein zweites Konto beim Hostinganbieter. Sie würden dieses zweite Konto nur zum Testen verwenden, aber es wird auf die gleiche Weise wie das Produktionskonto eingerichtet.
In diesem Tutorial werden die Schritte für Option 2 veranschaulicht. Eine Anleitung für Option 3 finden Sie am Ende des Tutorials Bereitstellen in der Produktionsumgebung , und am Ende dieses Tutorials finden Sie Links zu Ressourcen für Option 1.
Erinnerung: Wenn Sie eine Fehlermeldung erhalten oder etwas nicht funktioniert, während Sie das Tutorial durchlaufen, überprüfen Sie unbedingt die Problembehandlungsseite.
Konfigurieren der Anwendung für die Ausführung in Mittlerer Vertrauensstellung
Vor der Installation und Bereitstellung von IIS ändern Sie eine Web.config Dateieinstellung, damit die Website in einer typischen Shared Hosting-Umgebung ausgeführt wird.
Hostinganbieter führen Ihre Website in der Regel mit mittlerer Vertrauensstellung aus, was bedeutet, dass es einige Dinge gibt, die sie nicht tun darf. Beispielsweise kann der Anwendungscode nicht auf die Windows-Registrierung zugreifen und keine Dateien lesen oder schreiben, die sich außerhalb der Ordnerhierarchie Ihrer Anwendung befinden. Standardmäßig wird Ihre Anwendung auf Ihrem lokalen Computer mit hoher Vertrauenswürdigkeit ausgeführt, was bedeutet, dass die Anwendung möglicherweise in der Lage ist, Dinge zu tun, die bei der Bereitstellung in der Produktion fehlschlagen würden. Damit die Testumgebung die Produktionsumgebung genauer widerspiegelt, konfigurieren Sie die Anwendung so, dass sie mit mittlerer Vertrauenswürdigstellung ausgeführt wird.
Fügen Sie in der Anwendungsdatei Web.config ein Vertrauenselement im system.web-Element hinzu, wie in diesem Beispiel gezeigt.
<configuration>
<!-- Settings -->
<system.web>
<trust level="Medium" />
<!-- Settings -->
</system.web>
</configuration>
Die Anwendung wird jetzt in IIS mit mittlerer Vertrauensstellung ausgeführt, auch auf Ihrem lokalen Computer. Mit dieser Einstellung können Sie so früh wie möglich alle Versuche von Anwendungscode abfangen, etwas zu tun, das in der Produktion fehlschlagen würde.
Hinweis
Wenn Sie Entity Framework Code First-Migrationen verwenden, stellen Sie sicher, dass Version 5.0 oder höher installiert ist. In Entity Framework Version 4.3 erfordert Migrationen vollständige Vertrauenswürdigkeiten, um das Datenbankschema zu aktualisieren.
Installieren von IIS und Web Deploy
Zum Bereitstellen in IIS auf Ihrem Entwicklungscomputer müssen IIS und Web Deploy installiert sein. Diese sind nicht in der Windows 7-Standardkonfiguration enthalten. Wenn Sie iis und Web Deploy bereits installiert haben, fahren Sie mit dem nächsten Abschnitt fort.
Die Verwendung des Webplattform-Installers ist die bevorzugte Methode zum Installieren von IIS und Web Deploy, da der Webplattform-Installer eine empfohlene Konfiguration für IIS installiert und bei Bedarf automatisch die Voraussetzungen für IIS und Web Deploy installiert.
Verwenden Sie den folgenden Link, um den Webplattform-Installer zum Installieren von IIS und Web Deploy auszuführen. Wenn Sie IIS, Web Deploy oder eine der erforderlichen Komponenten bereits installiert haben, installiert der Webplattform-Installer nur das, was fehlt.
Festlegen des Standardanwendungspools auf .NET 4
Führen Sie nach der Installation von IIS den IIS-Manager aus, um sicherzustellen, dass der .NET Framework Version 4 dem Standardanwendungspool zugewiesen ist.
Wählen Sie im Windows-StartmenüAusführen aus, geben Sie "inetmgr" ein, und klicken Sie dann auf OK. (Wenn sich der Befehl Ausführen nicht im Startmenü befindet, können Sie die Windows-TASTE und R drücken, um ihn zu öffnen. Oder klicken Sie mit der rechten Maustaste auf die Taskleiste, klicken Sie auf Eigenschaften, wählen Sie die Registerkarte Startmenü aus, klicken Sie auf Anpassen, und wählen Sie Befehl ausführen aus.)
Erweitern Sie im Bereich Connections den Serverknoten, und wählen Sie Anwendungspools aus. Wenn DefaultAppPool im Bereich Anwendungspools der .NET Framework-Version 4 zugewiesen ist, wie in der folgenden Abbildung dargestellt, fahren Sie mit dem nächsten Abschnitt fort.
Wenn nur zwei Anwendungspools angezeigt werden und beide auf den .NET Framework 2.0 festgelegt sind, müssen Sie ASP.NET 4 in IIS installieren:
Öffnen Sie ein Eingabeaufforderungsfenster, indem Sie im Windows-Startmenü mit der rechten Maustaste auf Eingabeaufforderung klicken und als Administrator ausführen auswählen. Führen Sie dann aspnet_regiis.exe aus, um ASP.NET 4 in IIS mit den folgenden Befehlen zu installieren. (Ersetzen Sie in 64-Bit-Systemen "Framework" durch "Framework64".)
cd %windir%\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe –iru
Mit diesem Befehl werden neue Anwendungspools für die .NET Framework 4 erstellt, aber der Standardanwendungspool wird weiterhin auf 2.0 festgelegt. Sie stellen eine Anwendung für .NET 4 für diesen Anwendungspool bereit, sodass Sie den Anwendungspool in .NET 4 ändern müssen.
Wenn Sie den IIS-Manager geschlossen haben, führen Sie ihn erneut aus, erweitern Sie den Serverknoten, und klicken Sie auf Anwendungspools , um den Bereich Anwendungspools erneut anzuzeigen.
Klicken Sie im Bereich Anwendungspools auf DefaultAppPool, und klicken Sie dann im Bereich Aktionen auf Grundeinstellungen.
Ändern Sie im Dialogfeld Anwendungspool bearbeiten.NET Framework Version in .NET Framework v4.0.30319, und klicken Sie auf OK.
Sie können jetzt in IIS veröffentlichen.
Veröffentlichung in IIS
Es gibt mehrere Möglichkeiten, mit Visual Studio 2010 und Web Deploy bereitzustellen:
- Verwenden Sie Visual Studio mit einem Klick veröffentlichen.
- Erstellen Sie ein Bereitstellungspaket , und installieren Sie es mithilfe der IIS-Manager-Benutzeroberfläche. Das Bereitstellungspaket besteht aus einer .zip-Datei , die alle Dateien und Metadaten enthält, die zum Installieren einer Website in IIS erforderlich sind.
- Erstellen Sie ein Bereitstellungspaket, und installieren Sie es über die Befehlszeile.
Der Prozess, den Sie in den vorherigen Tutorials zum Einrichten von Visual Studio zum Automatisieren von Bereitstellungsaufgaben durchlaufen haben, gilt für alle diese drei Methoden. In diesen Tutorials verwenden Sie die erste dieser Methoden. Informationen zur Verwendung von Bereitstellungspaketen finden Sie unter ASP.NET Bereitstellungsinhaltszuordnung.
Stellen Sie vor der Veröffentlichung sicher, dass Sie Visual Studio im Administratormodus ausführen. (Klicken Sie im Windows 7-Startmenü mit der rechten Maustaste auf das Symbol für die version von Visual Studio, die Sie verwenden, und wählen Sie Als Administrator ausführen aus.) Der Administratormodus ist nur für die Veröffentlichung erforderlich, wenn Sie auf dem lokalen Computer in IIS veröffentlichen.
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity (nicht auf das Projekt ContosoUniversity.DAL), und wählen Sie Veröffentlichen aus.
Der Assistent Web veröffentlichen wird geöffnet.
Wählen Sie in der Dropdownliste Neu...> aus<.
Geben Sie im Dialogfeld Neues Profil "Test" ein, und klicken Sie dann auf OK.
Dieser Name entspricht dem mittleren Knoten der Web.Test.config Transformationsdatei, die Sie zuvor erstellt haben. Diese Korrespondenz bewirkt, dass die Web.Test.config Transformationen angewendet werden, wenn Sie mit diesem Profil veröffentlichen.
Der Assistent wechselt automatisch zur Registerkarte Verbindung .
Geben Sie im Feld Dienst-URLden Wert localhost ein.
Geben Sie im Feld Website/AnwendungStandardwebsite/ContosoUniversity ein.
Geben Sie in das Feld Ziel-URL ein http://localhost/ContosoUniversity
.
Die Einstellung Ziel-URL ist nicht erforderlich. Wenn Visual Studio die Bereitstellung der Anwendung abgeschlossen hat, wird Der Standardbrowser automatisch für diese URL geöffnet. Wenn der Browser nach der Bereitstellung nicht automatisch geöffnet werden soll, lassen Sie dieses Feld leer.
Klicken Sie auf Verbindung überprüfen , um zu überprüfen, ob die Einstellungen richtig sind und Sie auf dem lokalen Computer eine Verbindung mit IIS herstellen können.
Ein grünes Häkchen überprüft, ob die Verbindung erfolgreich ist.
Klicken Sie auf Weiter , um zur Registerkarte Einstellungen zu gelangen.
Das Dropdownfeld Konfiguration gibt die zu bereitstellende Buildkonfiguration an. Der Standardwert ist Release, was Sie möchten.
Lassen Sie das Kontrollkästchen Zusätzliche Dateien am Ziel entfernen deaktiviert. Da dies Ihre erste Bereitstellung ist, sind noch keine Dateien im Zielordner vorhanden.
Geben Sie im Abschnitt Datenbanken den folgenden Wert in das Feld Verbindungszeichenfolge für SchoolContext ein:
Data Source=|DataDirectory|School-Prod.sdf
Beim Bereitstellungsprozess wird diese Verbindungszeichenfolge in die bereitgestellte Web.config-Datei eingefügt, da Diese Verbindungszeichenfolge zur Laufzeit verwenden ausgewählt ist.
Wählen Sie auch unter SchoolContextdie Option Code First-Migrationen anwenden aus. Diese Option bewirkt, dass der Bereitstellungsprozess die bereitgestellte Web.config Datei konfiguriert, um den MigrateDatabaseToLatestVersion
Initialisierer anzugeben. Dieser Initialisierer aktualisiert die Datenbank automatisch auf die neueste Version, wenn die Anwendung zum ersten Mal nach der Bereitstellung auf die Datenbank zugreift.
Geben Sie im Feld Verbindungszeichenfolge für DefaultConnection den folgenden Wert ein:
Data Source=|DataDirectory|aspnet-Prod.sdf
Lassen Sie update database deaktiviert. Die Mitgliedschaftsdatenbank wird bereitgestellt, indem die SDF-Datei in App_Data kopiert wird, und Sie möchten nicht, dass der Bereitstellungsprozess etwas anderes mit dieser Datenbank macht.
Klicken Sie auf Weiter , um zur Registerkarte Vorschau zu gelangen.
Klicken Sie auf der Registerkarte Vorschau auf Vorschau starten , um eine Liste der Dateien anzuzeigen, die kopiert werden.
Klicken Sie auf Veröffentlichen.
Wenn Visual Studio sich nicht im Administratormodus befindet, wird möglicherweise eine Fehlermeldung angezeigt, die auf einen Berechtigungsfehler hinweist. Schließen Sie in diesem Fall Visual Studio, öffnen Sie es im Administratormodus, und versuchen Sie erneut, zu veröffentlichen.
Wenn Visual Studio sich im Administratormodus befindet, meldet das Ausgabefenster den erfolgreichen Build- und Veröffentlichungsvorgang.
Der Browser öffnet automatisch die Startseite der Contoso University, die in IIS auf dem lokalen Computer ausgeführt wird.
Testen in der Testumgebung
Beachten Sie, dass der Umgebungsindikator "(Test)" anstelle von "(Dev)" anzeigt, was anzeigt, dass die Web.config Transformation für den Umgebungsindikator erfolgreich war.
Führen Sie die Seite Schüler aus, um zu überprüfen, ob die bereitgestellte Datenbank keine Kursteilnehmer enthält. Wenn Sie diese Seite auswählen, kann das Laden einige Minuten dauern, da Code First die Datenbank erstellt und dann die Seed
-Methode ausführt. (Dies wurde nicht ausgeführt, als Sie sich auf der Startseite befanden, da die Anwendung noch nicht versucht hat, auf die Datenbank zuzugreifen.)
Führen Sie die Seite Instructors aus, um zu überprüfen, ob Code First die Datenbank mit Kursleiterdaten ausser betrieb:
Wählen Sie im Menü Studenten die Option Kursteilnehmer hinzufügen aus, fügen Sie einen Kursteilnehmer hinzu, und zeigen Sie dann den neuen Kursteilnehmer auf der Seite Studenten an, um zu überprüfen, ob Sie erfolgreich in die Datenbank schreiben können:
Wählen Sie im Menü Kurse die Option Guthaben aktualisieren aus. Die Seite Guthaben aktualisieren erfordert Administratorberechtigungen, sodass die Anmeldeseite angezeigt wird. Geben Sie die Anmeldeinformationen des Administratorkontos ein, die Sie zuvor erstellt haben ("admin" und "Pas$w0rd"). Die Seite Guthaben aktualisieren wird angezeigt, die überprüft, ob das Administratorkonto, das Sie im vorherigen Tutorial erstellt haben, ordnungsgemäß in der Testumgebung bereitgestellt wurde.
Vergewissern Sie sich, dass ein Elmah-Ordner vorhanden ist, in dem nur die Platzhalterdatei enthalten ist.
Überprüfen der änderungen der automatischen Web.config für Code First-Migrationen
Öffnen Sie die dateiWeb.config in der bereitgestellten Anwendung unter C:\inetpub\wwwroot\ContosoUniversity, und Sie können sehen, wo der Bereitstellungsprozess konfiguriert Code First-Migrationen, um die Datenbank automatisch auf die neueste Version zu aktualisieren.
Der Bereitstellungsprozess hat auch eine neue Verbindungszeichenfolge für Code First-Migrationen erstellt, die ausschließlich zum Aktualisieren des Datenbankschemas verwendet werden kann:
Mit diesem zusätzlichen Verbindungszeichenfolge können Sie ein Benutzerkonto für Datenbankschemaupdates und ein anderes Benutzerkonto für den Zugriff auf Anwendungsdaten angeben. Sie könnten beispielsweise die db_owner Rolle Code First-Migrationen zuweisen und der Anwendung rollen db_datareader und db_datawriter. Dies ist ein gängiges Tiefenschutzmuster, das verhindert, dass potenziell schädlicher Code in der Anwendung das Datenbankschema ändert. (Dies kann beispielsweise bei einem erfolgreichen SQL-Einschleusungsangriff auftreten.) Dieses Muster wird in diesen Tutorials nicht verwendet. Sie gilt nicht für SQL Server Compact und gilt nicht, wenn Sie in einem späteren Tutorial dieser Reihe zu SQL Server migrieren. Die Cytanium-Website bietet nur ein Benutzerkonto für den Zugriff auf die SQL Server Datenbank, die Sie bei Cytanium erstellen. Wenn Sie dieses Muster in Ihrem Szenario implementieren können, führen Sie die folgenden Schritte aus:
- Geben Sie auf der Registerkarte Einstellungen des Assistenten zum Veröffentlichen von Web die Verbindungszeichenfolge ein, die einen Benutzer mit vollständigen Datenbankschemaupdateberechtigungen angibt, und deaktivieren Sie das Kontrollkästchen Diese Verbindungszeichenfolge zur Laufzeit verwenden. In der bereitgestellten Web.config-Datei wird dies zum
DatabasePublish
Verbindungszeichenfolge. - Erstellen Sie eine Web.config-Dateitransformation für die Verbindungszeichenfolge, die die Anwendung zur Laufzeit verwenden soll.
Sie haben Ihre Anwendung nun in IIS auf Ihrem Entwicklungscomputer bereitgestellt und dort getestet. Dadurch wird überprüft, ob der Bereitstellungsprozess den Inhalt der Anwendung an den richtigen Speicherort kopiert hat (mit Ausnahme der Dateien, die Sie nicht bereitstellen wollten), und dass Web Deploy IIS während der Bereitstellung ordnungsgemäß konfiguriert hat. Im nächsten Tutorial führen Sie einen weiteren Test aus, der eine noch nicht abgeschlossene Bereitstellungsaufgabe findet: Festlegen von Ordnerberechtigungen für den Ordner Elmah .
Weitere Informationen
Informationen zum Ausführen von IIS oder IIS Express in Visual Studio finden Sie in den folgenden Ressourcen:
- IIS Express Übersicht auf der IIS.net-Website.
- Einführung IIS Express im Blog von Scott Guthrie.
- Vorgehensweise: Geben Sie den Webserver für Webprojekte in Visual Studio an.
- Hauptunterschiede zwischen IIS und dem ASP.NET Development Server auf der ASP.NET-Website.
- Testen Sie Ihre ASP.NET MVC- oder Web Forms-Anwendung in IIS 7 in 30 Sekunden im Blog von Rick Anderson. Dieser Eintrag enthält Beispiele dafür, warum Das Testen mit dem Visual Studio Development Server (Cassini) nicht so zuverlässig ist wie das Testen in IIS Express und warum Das Testen in IIS Express nicht so zuverlässig ist wie das Testen in IIS.