ASP.NET Webbereitstellung mit Visual Studio: Einführung

von Tom Dykstra

Herunterladen des Starterprojekts

In dieser Tutorialreihe erfahren Sie, wie Sie mithilfe von Visual Studio 2012 mit dem Azure SDK für .NET eine ASP.NET Webanwendung für Azure App Service Web-Apps oder einen Hostinganbieter eines Drittanbieters bereitstellen (veröffentlichen). Die meisten Verfahren sind für Visual Studio 2013 ähnlich.

Sie entwickeln eine Webanwendung, um sie den Menschen über das Internet zur Verfügung zu stellen. Webprogrammierungstutorials werden jedoch in der Regel sofort beendet, nachdem sie Ihnen gezeigt haben, wie Sie etwas auf Ihrem Entwicklungscomputer zum Arbeiten bringen. Diese Reihe von Tutorials beginnt dort, wo die anderen weglassen: Sie haben eine Web-App erstellt, getestet, und sie ist einsatzbereit. Wie geht es weiter? In diesen Tutorials erfahren Sie, wie Sie zuerst für IIS auf Ihrem lokalen Entwicklungscomputer zum Testen und dann für Azure oder einen Drittanbieter für Staging und Produktion bereitstellen. Die Beispielanwendung, die Sie bereitstellen, ist ein Webanwendungsprojekt, das Entity Framework, SQL Server und das ASP.NET Mitgliedschaftssystem verwendet. Die Beispielanwendung verwendet ASP.NET Web Forms, aber die gezeigten Verfahren gelten auch für ASP.NET MVC und Web-API.

In diesen Tutorials wird vorausgesetzt, dass Sie wissen, wie Sie mit ASP.NET in Visual Studio arbeiten. Andernfalls ist ein einfaches ASP.NET Web Forms-Tutorial oder ein grundlegendes ASP.NET MVC-Tutorial ein guter Ausgangspunkt.

Wenn Sie Fragen haben, die sich nicht direkt auf das Tutorial beziehen, können Sie diese im ASP.NET-Bereitstellungsforum oder im StackOverflow posten.

Überblick

In diesen Tutorials erfahren Sie, wie Sie eine ASP.NET Webanwendung bereitstellen, die SQL Server Datenbanken enthält. Sie stellen zuerst auf Ihrem lokalen Entwicklungscomputer zum Testen in IIS bereit, und Web-Apps sie dann in Azure App Service und Azure SQL-Datenbank für Staging und Produktion. Sie erfahren, wie Sie die Bereitstellung mithilfe der 1-Klick-Veröffentlichung in Visual Studio durchführen, und Sie erfahren, wie Sie die Bereitstellung über die Befehlszeile durchführen.

Die Anzahl der Tutorials macht den Bereitstellungsprozess möglicherweise entmutigend. Tatsächlich sind die grundlegenden Verfahren einfach. In realen Situationen müssen Sie jedoch häufig zusätzliche Bereitstellungsaufgaben ausführen, z. B. das Festlegen von Ordnerberechtigungen auf dem Zielserver. Wir haben einige dieser zusätzlichen Aufgaben veranschaulicht, in der Hoffnung, dass die Tutorials keine Informationen auslassen, die Sie daran hindern könnten, eine echte Anwendung erfolgreich bereitzustellen.

Die Tutorials sind so konzipiert, dass sie nacheinander ausgeführt werden, und jedes Teil baut auf dem vorherigen Teil auf. Sie können Teile überspringen, die für Ihre Situation nicht relevant sind, aber dann müssen Sie die Verfahren möglicherweise in späteren Tutorials anpassen.

Zielpublikum

Die Tutorials richten sich an ASP.NET Entwickler, die in Umgebungen arbeiten, in denen:

  • Die Produktionsumgebung ist Azure App Service Web-Apps oder ein Drittanbieterhostinganbieter.
  • Die Bereitstellung ist nicht auf einen Continuous Integration-Prozess beschränkt, sondern kann direkt über Visual Studio erfolgen.

Die Bereitstellung über die Quellcodeverwaltung mithilfe eines Continuous Delivery-Prozesses wird in diesen Tutorials nicht behandelt, mit Ausnahme eines Tutorials, in dem gezeigt wird, wie sie über die Befehlszeile bereitgestellt werden. Informationen zu Continuous Delivery finden Sie in den folgenden Ressourcen:

Verwenden eines Hostinganbieters eines Drittanbieters

Die Tutorials führen Sie durch den Prozess der Einrichtung eines Azure-Kontos und der Bereitstellung der Anwendung für Web-Apps in Azure App Service für Staging und Produktion. Sie können jedoch die gleichen grundlegenden Verfahren für die Bereitstellung bei einem Drittanbieter-Hostinganbieter Ihrer Wahl verwenden. In den Tutorials werden prozesse erläutert, die für Azure einzigartig sind, und es wird erläutert, welche Unterschiede Sie bei einem Drittanbieter erwarten können.

Bereitstellen von Web-App-Projekten

Die Beispielanwendung, die Sie für diese Tutorials herunterladen und bereitstellen, ist ein Visual Studio-Webanwendungsprojekt. Wenn Sie jedoch das neueste Web publish Update für Visual Studio installieren, können Sie dieselben Bereitstellungsmethoden und Tools für Web-App-Projekte verwenden.

Bereitstellen von ASP.NET MVC-Projekten

Die Beispielanwendung ist ein ASP.NET Web Forms Projekt, aber alles, was Sie lernen, ist auch auf ASP.NET MVC anwendbar. Ein Visual Studio MVC-Projekt ist nur eine andere Form von Webanwendungsprojekt. Der einzige Unterschied besteht darin, dass Sie bei einer Bereitstellung für einen Hostinganbieter, der ASP.NET MVC oder Ihre Zielversion davon nicht unterstützt, sicherstellen müssen, dass Sie das entsprechende NuGet-Paket (MVC 3, MVC 4 oder MVC 5) in Ihrem Projekt installiert haben.

Programmiersprache

Die Beispielanwendung verwendet C#, aber die Tutorials erfordern keine Kenntnisse von C#, und die in den Tutorials gezeigten Bereitstellungstechniken sind nicht sprachspezifisch.

Methoden für die Datenbankbereitstellung

Es gibt drei Möglichkeiten, eine SQL Server-Datenbank zusammen mit der Webbereitstellung in Visual Studio bereitzustellen:

  • Entity Framework Code First-Migrationen
  • Der dbDacFx Web Deploy-Anbieter
  • Der DbFullSql Web Deploy-Anbieter

In diesem Tutorial verwenden Sie die ersten beiden Methoden. Der DbFullSql Web Deploy-Anbieter ist eine Legacymethode, die mit Ausnahme einiger spezifischer Szenarien nicht mehr empfohlen wird, z. B. die Migration von SQL Server Compact zu SQL Server.

Die in diesem Tutorial gezeigten Methoden gelten für SQL Server Datenbanken, nicht für SQL Server Compact. Informationen zum Bereitstellen einer SQL Server Compact-Datenbank finden Sie unter Visual Studio-Webbereitstellung mit SQL Server Compact.

Die in diesem Tutorial gezeigten Methoden erfordern die Verwendung der Web Deploy-Veröffentlichungsmethode. Wenn Sie eine andere Veröffentlichungsmethode bevorzugen, z. B. FTP, Dateisystem oder FPSE, finden Sie weitere Informationen unter Bereitstellen einer Datenbank getrennt von der Bereitstellung von Webanwendungen in der Inhaltszuordnung für Die Webbereitstellung für Visual Studio und ASP.NET.

Entity Framework Code First-Migrationen

In Entity Framework Version 4.3 hat Microsoft Code First-Migrationen eingeführt. Code First-Migrationen automatisiert den Prozess, inkrementelle Änderungen an einem Datenmodell vorzunehmen und diese Änderungen an die Datenbank weiterzuverbreiten. In früheren Versionen von Code First lässt Entity Framework die Datenbank in der Regel bei jeder Änderung des Datenmodells löschen und neu erstellen. Dies ist kein Problem in der Entwicklung, da Testdaten leicht neu erstellt werden können, aber in der Produktion möchten Sie in der Regel das Datenbankschema aktualisieren, ohne die Datenbank zu löschen. Mit dem Migrationsfeature kann Code First die Datenbank aktualisieren, ohne sie zu löschen und neu zu erstellen. Sie können Code First automatisch entscheiden lassen, wie die erforderlichen Schemaänderungen vorgenommen werden sollen, oder Sie können Code schreiben, mit dem die Änderungen angepasst werden. Eine Einführung in Code First-Migrationen finden Sie unter Code First-Migrationen.

Wenn Sie ein Webprojekt bereitstellen, kann Visual Studio den Prozess der Bereitstellung einer Datenbank automatisieren, die von Code First-Migrationen verwaltet wird. Wenn Sie das Veröffentlichungsprofil erstellen, aktivieren Sie ein Kontrollkästchen mit der Bezeichnung Ausführen Code First-Migrationen (wird beim Anwendungsstart ausgeführt). Diese Einstellung bewirkt, dass der Bereitstellungsprozess die Anwendungsdatei Web.config auf dem Zielserver automatisch konfiguriert, sodass Code First die MigrateDatabaseToLatestVersion Initialisiererklasse verwendet.

Visual Studio führt während des Bereitstellungsprozesses keine Aktionen mit der Datenbank aus. Wenn die bereitgestellte Anwendung nach der Bereitstellung zum ersten Mal auf die Datenbank zugreift, erstellt Code First automatisch die Datenbank oder aktualisiert das Datenbankschema auf die neueste Version. Wenn die Anwendung eine Migrations Seed-Methode implementiert, wird die Methode ausgeführt, nachdem die Datenbank erstellt oder das Schema aktualisiert wurde.

In diesem Tutorial verwenden Sie Code First-Migrationen, um die Anwendungsdatenbank bereitzustellen.

Der dbDacFx Web Deploy-Anbieter

Für eine SQL Server Datenbank, die nicht von Entity Framework Code First verwaltet wird, können Sie beim Konfigurieren des Veröffentlichungsprofils ein Kontrollkästchen mit der Bezeichnung Datenbank aktualisieren aktivieren. Während der ersten Bereitstellung erstellt der DbDacFx-Anbieter Tabellen und andere Datenbankobjekte in der Zieldatenbank, die mit der Quelldatenbank übereinstimmen. Bei nachfolgenden Bereitstellungen bestimmt der Anbieter, was sich zwischen den Quell- und Zieldatenbanken unterscheidet, und aktualisiert das Schema der Zieldatenbank entsprechend der Quelldatenbank. Standardmäßig nimmt der Anbieter keine Änderungen vor, die zu Datenverlust führen, z. B. wenn eine Tabelle oder Spalte gelöscht wird.

Mit dieser Methode wird die Bereitstellung von Daten in Datenbanktabellen nicht automatisiert, sie können jedoch Skripts erstellen und Visual Studio so konfigurieren, dass diese während der Bereitstellung ausgeführt werden. Ein weiterer Grund zum Ausführen von Skripts während der Bereitstellung besteht darin, Schemaänderungen vorzunehmen, die nicht automatisch vorgenommen werden können, da sie zu Datenverlust führen würden.

In diesem Tutorial verwenden Sie den DbDacFx-Anbieter, um die ASP.NET-Mitgliedschaftsdatenbank bereitzustellen.

Problembehandlung während dieses Tutorials

Wenn während der Bereitstellung ein Fehler auftritt oder der bereitgestellte Standort nicht ordnungsgemäß ausgeführt wird, bieten die Fehlermeldungen nicht immer eine offensichtliche Lösung. Um Sie bei einigen gängigen Problemszenarien zu unterstützen, ist eine Referenzseite zur Problembehandlung verfügbar. Wenn Sie eine Fehlermeldung erhalten oder etwas nicht funktioniert, während Sie die Tutorials durchlaufen, überprüfen Sie unbedingt die Seite zur Problembehandlung.

Kommentare willkommen

Kommentare zu den Tutorials sind willkommen, und wenn das Tutorial aktualisiert wird, werden alle Anstrengungen unternommen, um Korrekturen oder Verbesserungsvorschläge zu berücksichtigen, die in Tutorialkommentaren bereitgestellt werden.

Voraussetzungen

Dieses Tutorial wurde für die folgenden Produkte geschrieben:

Sie können dem Tutorial folgen, indem Sie Visual Studio 2010 SP1 oder Visual Studio 2013 verwenden. Einige Screenshots sind jedoch unterschiedlich, und einige Features unterscheiden sich.

Wenn Sie Visual Studio 2013 verwenden, installieren Sie das Azure SDK für Visual Studio 2013.

Wenn Sie Visual Studio 2010 SP1 verwenden, installieren Sie die folgende Software:

Je nachdem, wie viele SDK-Abhängigkeiten bereits auf Ihrem Computer vorhanden sind, kann die Installation des Azure SDK sehr lange dauern, von mehreren Minuten bis zu einer halben Stunde oder mehr. Sie benötigen das Azure SDK auch dann, wenn Sie die Veröffentlichung bei einem Drittanbieter anstelle von Azure planen, da das SDK die neuesten Updates der Webveröffentlichungsfeatures von Visual Studio enthält.

Hinweis

Dieses Tutorial wurde mit Version 1.8.1 des Azure SDK geschrieben. Seitdem wurden neuere Versionen mit zusätzlichen Features veröffentlicht. Die Tutorials wurden aktualisiert, um diese Features zu Erwähnung und Links zu Ressourcen zu erstellen, die weitere Informationen zu ihnen enthalten.

Die Anweisungen und Screenshots basieren auf Windows 8, aber in den Tutorials werden die Unterschiede für Windows 7 erläutert.

Es ist eine andere Software erforderlich, um das Tutorial abzuschließen, aber Sie müssen diese noch nicht installiert haben. Das Tutorial führt Sie durch die Schritte für die Installation, wenn Sie es benötigen.

Herunterladen der Beispielanwendung

Die Anwendung, die Sie bereitstellen, heißt Contoso University und wurde bereits für Sie erstellt. Es handelt sich um eine vereinfachte Version einer Universitätswebsite, die lose auf der Anwendung der Contoso University basiert, die in den Entity Framework-Tutorials auf der ASP.NET-Website beschrieben wird.

Wenn Sie die erforderlichen Komponenten installiert haben, laden Sie die Contoso University-Webanwendung herunter. Die .zip-Datei enthält mehrere Versionen des Projekts. Um die Schritte des Tutorials zu durchlaufen, beginnen Sie mit dem Projekt im Ordner C#. Um zu sehen, wie das Projekt am Ende der Tutorials aussieht, öffnen Sie das Projekt im Ordner ContosoUniversity-End.

Führen Sie die folgenden Schritte aus, um das Projekt für die Ausführung der Tutorialschritte vorzubereiten:

  1. Speichern Sie die Projektmappendateien von ContosoUniversity aus dem C#-Ordner in einem Ordner namens ContosoUniversity in einem Ordner, den Sie für die Arbeit mit Visual Studio-Projekten verwenden.

    Dies ist standardmäßig der folgende Ordner für Visual Studio 2012:

    C:\Users\<username>\Documents\Visual Studio 2012\Projects

    (Für die Screenshots in diesem Tutorial befindet sich der Projektordner im Stammverzeichnis auf laufwerk C:.)

  2. Starten Sie Visual Studio, und öffnen Sie das Projekt.

  3. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und klicken Sie auf AktivierenNuGet-Paketwiederherstellung.

  4. Erstellen Sie die Projektmappe.

  5. Wenn Kompilierungsfehler auftreten, stellen Sie die NuGet-Pakete manuell wieder her:

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und klicken Sie dann auf NuGet-Pakete für Projektmappe verwalten.
    2. Oben im Dialogfeld NuGet-Pakete verwalten wird angezeigt , dass einige NuGet-Pakete in dieser Lösung fehlen. Klicken Sie, um die Wiederherstellung durchzuführen. Klicken Sie auf die Schaltfläche Wiederherstellen .
    3. Generieren Sie die Projektmappe neu.
  6. Drücken Sie STRG+F5, um die Anwendung auszuführen.

    Die Anwendung wird mit der Startseite der Contoso University geöffnet.

    Startseitenentwicklung

    (Es kann eine Wartezeit geben, während Visual Studio die SQL Server Express LocalDB-instance startet, und Sie erhalten möglicherweise einen Timeoutfehler, wenn dieser Prozess zu lange dauert. In diesem Fall starten Sie das Projekt einfach erneut.)

Auf die Webseitenseiten kann über die Menüleiste zugegriffen werden, und Sie können die folgenden Funktionen ausführen:

  • Anzeigen von Studentenstatistiken (Seite "Info").
  • Anzeigen, Bearbeiten, Löschen und Hinzufügen von Kursteilnehmern
  • Anzeigen und Bearbeiten von Kursen
  • Anzeigen und Bearbeiten von Kursleitern
  • Anzeigen und Bearbeiten von Abteilungen.

Es folgen Screenshots einiger repräsentativer Seiten.

Entwicklung der Schülerseite

Hinzufügen der Seite

Überprüfen von Anwendungsfeatures, die sich auf die Bereitstellung auswirken

Die folgenden Features der Anwendung beeinflussen, wie Sie sie bereitstellen oder was Sie tun müssen, um sie bereitzustellen. Jede dieser Tutorials wird in den folgenden Tutorials der Reihe ausführlicher erläutert.

  • Die Contoso University verwendet eine SQL Server-Datenbank, um Anwendungsdaten wie Studenten- und Dozentennamen zu speichern. Die Datenbank enthält eine Mischung aus Testdaten und Produktionsdaten. Bei der Bereitstellung in der Produktion müssen Sie die Testdaten ausschließen.
  • Die Anwendung verwendet das ASP.NET Mitgliedschaftssystem, das Benutzerkontoinformationen in einer SQL Server-Datenbank speichert. Die Anwendung definiert einen Administratorbenutzer, der Zugriff auf einige eingeschränkte Informationen hat. Sie müssen die Mitgliedschaftsdatenbank ohne Testkonten, aber mit einem Administratorkonto bereitstellen.
  • Die Anwendung verwendet ein Hilfsprogramm für die Fehlerprotokollierung und -berichterstellung von Drittanbietern. Dieses Hilfsprogramm wird in einer Assembly bereitgestellt, die mit der Anwendung bereitgestellt werden muss.
  • Das Hilfsprogramm für die Fehlerprotokollierung schreibt Fehlerinformationen in XML-Dateien in einen Dateiordner. Sie müssen sicherstellen, dass das Konto, unter dem ASP.NET auf der bereitgestellten Website ausgeführt wird, über Schreibberechtigungen für diesen Ordner verfügt und Sie diesen Ordner von der Bereitstellung ausschließen müssen. (Andernfalls können Fehlerprotokolldaten aus der Testumgebung in der Produktion bereitgestellt werden und/oder Produktionsfehlerprotokolldateien gelöscht werden.)
  • Die Anwendung enthält einige Einstellungen, die in der bereitgestellten Web.config Datei je nach Zielumgebung (Test, Staging oder Produktion) geändert werden müssen, und andere Einstellungen, die je nach Buildkonfiguration (Debuggen oder Release) geändert werden müssen.
  • Die Visual Studio-Projektmappe enthält ein Klassenbibliotheksprojekt. Nur die Assembly, die von diesem Projekt generiert wird, sollte bereitgestellt werden, nicht das Projekt selbst.

Zusammenfassung

In diesem ersten Tutorial der Reihe haben Sie das Visual Studio-Beispielprojekt heruntergeladen und websitefeatures überprüft, die sich auf die Bereitstellung der Anwendung auswirken. In den folgenden Tutorials bereiten Sie die Bereitstellung vor, indem Sie einige dieser Dinge einrichten, die automatisch behandelt werden sollen. Andere, um die Sie sich manuell kümmern.