ASP.NET Web Deployment using Visual Studio: Deploying to Test

von Tom Dykstra

In dieser Tutorialreihe wird gezeigt, wie Sie mithilfe von Visual Studio 2017 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.

Eine aktuelle Version der Bereitstellung in Azure finden Sie unter Erstellen einer ASP.NET Core-Web-App in Azure.

Überblick

In diesem Tutorial stellen Sie eine ASP.NET Webanwendung für InternetInformationsserver (IIS) auf Ihrem lokalen Computer bereit.

Wenn Sie eine Anwendung entwickeln, führen Sie sie im Allgemeinen aus und testen sie in Visual Studio. Standardmäßig verwenden Webanwendungsprojekte in Visual Studio 2017 IIS Express als Entwicklungswebserver. IIS Express verhält sich eher wie ein vollständiger IIS als der Visual Studio Development Server (auch bekannt als Cassini), der von Visual Studio 2017 standardmäßig verwendet wird. Aber keiner der Entwicklungswebserver funktioniert genau wie IIS. Folglich kann eine App in Visual Studio ordnungsgemäß ausgeführt und getestet werden, schlägt jedoch fehl, wenn sie in IIS bereitgestellt wird.

Sie können Ihre Anwendung auf zwei Arten zuverlässig testen:

  1. Stellen Sie Ihre Anwendung in IIS auf Ihrem Entwicklungscomputer mithilfe desselben Prozesses bereit, den Sie später für die Bereitstellung in Ihrer Produktionsumgebung verwenden werden.

    Sie können Visual Studio für die Verwendung von IIS konfigurieren, wenn Sie ein Webprojekt ausführen, aber dadurch würde Der Bereitstellungsprozess nicht getestet. Mit dieser Methode wird Ihr Bereitstellungsprozess überprüft und überprüft, ob Ihre Anwendung unter IIS ordnungsgemäß ausgeführt wird.

  2. Stellen Sie Ihre Anwendung in einer Testumgebung bereit, die Ihrer Produktionsumgebung ähnelt.

    Die Produktionsumgebung für diese Tutorials wird in Azure App Service Web-Apps. Die ideale Testumgebung ist eine zusätzliche Web-App, die im Azure-Dienst erstellt wird. Obwohl sie auf die gleiche Weise wie eine Produktions-Web-App eingerichtet wäre, würden Sie sie nur zum Testen verwenden.

Option 2 ist die zuverlässigste Methode zum Testen. Wenn Sie Option 2 verwenden, müssen Sie nicht unbedingt Option 1 verwenden. Wenn Sie jedoch bei einem Drittanbieter-Hostinganbieter bereitstellen, ist Option 2 möglicherweise nicht möglich oder teuer. Daher werden in dieser Tutorialreihe beide Methoden veranschaulicht. Eine Anleitung für Option 2 finden Sie im Tutorial Bereitstellen in der Produktionsumgebung .

Weitere Informationen zur Verwendung von Webservern in Visual Studio finden Sie unter Webserver in Visual Studio für ASP.NET Web Projects.

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

Herunterladen des Startprojekts der Contoso University

Laden Sie die Startprojektmappe und das Projekt contoso University Visual Studio herunter, und installieren Sie sie. Diese Lösung enthält das abgeschlossene Tutorial.

Herunterladen des Starterprojekts

Installieren von IIS

Vergewissern Sie sich, dass IIS und Web Deploy installiert sind, um in IIS auf Ihrem Entwicklungscomputer bereitzustellen. Standardmäßig installiert Visual Studio Web Deploy, aber IIS ist nicht in der Standardkonfiguration Windows 10, Windows 8 oder Windows 7 enthalten. Wenn Sie IIS bereits installiert haben und der Standardanwendungspool bereits auf .NET 4 festgelegt ist, fahren Sie mit dem nächsten Abschnitt fort.

  1. Es wird empfohlen, den Webplattform-Installer (WPI) zu verwenden, um IIS und Web Deploy zu installieren. WPI installiert eine empfohlene IIS-Konfiguration, die bei Bedarf iis- und Web Deploy-Voraussetzungen enthält.

    Wenn Sie IIS, Web Deploy oder eine der erforderlichen Komponenten bereits installiert haben, installiert der WPI nur, was fehlt.

    • Verwenden Sie den Webplattform-Installer, um IIS und Web Deploy zu installieren:

      Installieren von IIS mithilfe von WPI

      Installieren von Web Deploy mithilfe von WPI

      Es werden Meldungen angezeigt, die angeben, dass IIS 7 installiert wird. Der Link funktioniert für IIS 8 in Windows 8. Führen Sie für Windows 8 und höher jedoch die folgenden Schritte durch, um sicherzustellen, dass ASP.NET 4.7 installiert ist:

    • Öffnen Sie Systemsteuerung>Programme>und Features>Windows-Features aktivieren oder deaktivieren.

    • Erweitern Sie Internetinformationsdienste, World Wide Web Services und Anwendungsentwicklungsfeatures.

    • Vergewissern Sie sich, dass ASP.NET 4.7 ausgewählt ist.

      Wählen Sie ASP.NET 4.7 aus.

    • Vergewissern Sie sich, dass World Wide Web Services und IIS Management Console ausgewählt ist. Dadurch werden IIS und IIS-Manager installiert.

      Auswählen von World Wide Web Services

    • Klicken Sie auf OK. Dialogfeldmeldungen, die angeben, dass die Installation erfolgt, werden angezeigt.

Führen Sie nach der Installation von IIS den IIS-Manager aus, um sicherzustellen, dass die .NET Framework Version 4 dem Standardanwendungspool zugewiesen ist.

  1. Drücken Sie WINDOWS+R, um das Dialogfeld Ausführen zu öffnen.

    (Geben Sie auf Windows 8 oder höher auf der Startseite "ausführen" ein. Wählen Sie in Windows 7 im Startmenüausführen aus. Wenn Sich Ausführen nicht im Startmenü befindet, klicken Sie mit der rechten Maustaste auf die Taskleiste, wählen Sie Eigenschaften aus, wählen Sie die Registerkarte Startmenü, klicken Sie auf Anpassen, und wählen Sie Befehl ausführen aus.)

  2. Geben Sie "inetmgr" ein, und wählen Sie OK aus.

  3. Erweitern Sie im Bereich Connections den Serverknoten, und wählen Sie Anwendungspools aus. Wenn DefaultAppPool im Bereich Anwendungspools wie in der folgenden Abbildung .NET Framework Version 4 zugewiesen ist, fahren Sie mit dem nächsten Abschnitt fort.

    Inetmgr_showing_4.0_app_pools

  4. Wenn nur zwei Anwendungspools angezeigt werden und beide auf .NET Framework 2.0 festgelegt sind, installieren Sie ASP.NET 4 in IIS.

    Informationen zu Windows 8 oder höher finden Sie in den Anweisungen des vorherigen Abschnitts, um sicherzustellen, dass ASP.NET 4.7 installiert ist, oder unter Installieren von ASP.NET 4.5 unter Windows 8 und Windows Server 2012. Öffnen Sie für Windows 7 ein Eingabeaufforderungsfenster, indem Sie im Windows-Startmenü mit der rechten Maustaste auf Eingabeaufforderung klicken und als Administrator ausführen auswählen. Führen Sie aspnet_regiis.exe aus, um ASP.NET 4 in IIS mit den folgenden Befehlen zu installieren. (Ersetzen Sie in 32-Bit-Systemen "Framework64" durch "Framework".)

    cd %windir%\Microsoft.NET\Framework64\v4.0.30319
    aspnet_regiis.exe –i
    

    Mit diesem Befehl werden neue Anwendungspools für die .NET Framework 4 erstellt, der Standardanwendungspool bleibt jedoch auf 2.0 festgelegt. Sie stellen eine Anwendung für .NET 4 für diesen Anwendungspool bereit. Ändern Sie daher den Anwendungspool in .NET 4.

  5. Wenn Sie den IIS-Manager geschlossen haben, führen Sie ihn erneut aus, erweitern Sie den Serverknoten, und wählen Sie Anwendungspools aus.

  6. Wählen Sie im Bereich Anwendungspoolsdie Option DefaultAppPool aus. Wählen Sie im Bereich Aktionen die Option Grundeinstellungen aus.

    Inetmgr_selecting_Basic_Settings_for_app_pool

  7. Ändern Sie im Dialogfeld Anwendungspool bearbeiten die .NET CLR-Version in .NET CLR v4.0.30319. Klicken Sie auf OK.

    Selecting_.NET_4_for_DefaultAppPool

Sie können jetzt eine Webanwendung in IIS veröffentlichen. Erstellen Sie zunächst jedoch Datenbanken zu Testzwecken.

SQL Server Express installieren

LocalDB ist nicht für die Verwendung in IIS konzipiert, sodass in Ihrer Testumgebung SQL Server Express installiert sein muss. Wenn Sie Visual Studio 2010 SQL Server Express verwenden, ist es bereits standardmäßig installiert. Wenn Sie Visual Studio 2012 oder höher verwenden, installieren Sie SQL Server Express.

Laden Sie SQL Server Express herunter, und installieren Sie sie aus dem Download Center: Microsoft SQL Server 2017 Express Edition.

Wählen Sie auf der ersten Seite des SQL Server Installationscenters Die Option Neue SQL Server eigenständige Installation aus, oder fügen Sie einer vorhandenen Installation Features hinzu, und befolgen Sie die Anweisungen, die die Standardoptionen übernehmen. Übernehmen Sie im Installations-Assistenten die Standardeinstellungen. Weitere Informationen zu Installationsoptionen finden Sie unter Installieren von SQL Server aus dem Installations-Assistenten (Setup).

Erstellen SQL Server Express Datenbanken für die Testumgebung

Die Contoso University-Anwendung verfügt über zwei Datenbanken:

  1. Mitgliedschaftsdatenbank
  2. Anwendungsdatenbank

Sie können diese Datenbanken in zwei separaten Datenbanken oder in einer einzelnen Datenbank bereitstellen. Wenn Sie sie kombinieren, werden Datenbankjoins zwischen ihnen einfacher.

Wenn Sie die Bereitstellung bei einem Hostinganbieter eines Drittanbieters durchführen, gibt Ihnen Ihr Hostingplan möglicherweise auch einen Grund, sie zu kombinieren. Beispielsweise kann der Anbieter für mehrere Datenbanken mehr in Rechnung stellen oder nicht einmal mehr als eine Datenbank zulassen.

In diesem Tutorial stellen Sie in zwei Datenbanken in der Testumgebung und in einer Datenbank in den Staging- und Produktionsumgebungen bereit.

Wählen Sie in Visual Studio im Menü Ansichtdie Option Server Explorer (Datenbank Explorer in Visual Web Developer) aus. Klicken Sie mit der rechten Maustaste auf Daten Connections, und wählen Sie Neue SQL Server Datenbank erstellen aus.

Selecting_Create_New_SQL_Server_Database

Geben Sie im Dialogfeld Neue SQL Server Datenbank erstellen im Feld Servername ".\SQLExpress" und im Feld Neuer Datenbankname "aspnet-ContosoUniversity" ein. Klicken Sie auf OK.

Erstellen von aspnet-ContosoUniversity

Führen Sie das gleiche Verfahren aus, um eine neue SQL Server Express School-Datenbank namens ContosoUniversityzu erstellen.

Server Explorer zeigt die beiden neuen Datenbanken an.

Neue Datenbanken in Server Explorer

Erstellen eines Gewährungsskripts für die neuen Datenbanken

Wenn die Anwendung in IIS auf Ihrem Entwicklungscomputer ausgeführt wird, verwendet die Anwendung die Anmeldeinformationen des Standardanwendungspools für den Zugriff auf die Datenbank. Standardmäßig verfügt der Anwendungspool jedoch nicht über die Berechtigung zum Öffnen der Datenbanken. Dies bedeutet, dass Sie ein Skript ausführen müssen, um diese Berechtigung zu erteilen. In diesem Abschnitt erstellen Sie dieses Skript und führen es später aus, um sicherzustellen, dass die Anwendung die Datenbanken öffnen kann, wenn sie in IIS ausgeführt wird.

Kopieren Sie in einem Text-Editor die folgenden SQL-Befehle in eine neue Datei, und speichern Sie sie als Grant.sql.

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Öffnen Sie in Visual Studio die Projektmappe Contoso University. Klicken Sie mit der rechten Maustaste auf die Projektmappe (nicht auf eines der Projekte), und wählen Sie Hinzufügen aus. Wählen Sie Vorhandenes Element aus, navigieren Sie zu Grant.sql, und öffnen Sie es.

Hinweis

Dieses Skript ist für die Verwendung mit SQL Server Express 2012 oder höher und mit den IIS-Einstellungen in Windows 10, Windows 8 oder Windows 7 konzipiert, wie sie in diesem Tutorial angegeben sind. Wenn Sie eine andere Version von SQL Server oder Windows verwenden oder IIS auf Ihrem Computer anders eingerichtet haben, sind möglicherweise Änderungen an diesem Skript erforderlich. Weitere Informationen zu SQL Server Skripts finden Sie in der SQL Server-Onlinedokumentation.

Hinweis

Sicherheitshinweis Dieses Skript erteilt db_owner dem Benutzer, der zur Laufzeit auf die Datenbank zugreift, Berechtigungen, die in der Produktionsumgebung vorhanden sind. In einigen Szenarien können Sie einen Benutzer angeben, der nur für die Bereitstellung über vollständige Datenbankschemaupdateberechtigungen verfügt, und für die Laufzeit einen anderen Benutzer angeben, der nur über Berechtigungen zum Lesen und Schreiben von Daten verfügt. Weitere Informationen finden Sie unter Überprüfen der automatischen Web.config Änderungen für Code First-Migrationen weiter unten in diesem Tutorial.

Ausführen des Gewährungsskripts in der Anwendungsdatenbank

Sie können das Veröffentlichungsprofil so konfigurieren, dass das Gewährungsskript während der Bereitstellung in der Mitgliedschaftsdatenbank ausgeführt wird, da für diese Datenbankbereitstellung der Anbieter dbDacFx verwendet wird. Sie können während Code First-Migrationen Bereitstellung keine Skripts ausführen, d. h. Sie stellen die Anwendungsdatenbank bereit. Dies bedeutet, dass Sie das Skript vor der Bereitstellung in der Anwendungsdatenbank manuell ausführen müssen.

  1. Öffnen Sie in Visual Studio die Grant.sql Datei, die Sie zuvor erstellt haben.

  2. Wählen Sie Verbinden aus.

    Schaltfläche „Verbinden“

  3. Geben Sie im Dialogfeld Verbindung mit Server herstellen den Namen .\SQLExpress als Servername ein. Wählen Sie Verbinden aus.

  4. Wählen Sie in der Datenbank-Dropdownliste ContosoUniversity aus. Wählen Sie Execute(Ausführen).

    Wählen Sie in der Datenbank-Dropdownliste ContosoUniversity aus. Wählen Sie Ausführen aus.

Die Standardidentität des Anwendungspools verfügt nun über ausreichende Berechtigungen in der Anwendungsdatenbank, damit Code First-Migrationen die Datenbanktabellen erstellen können, wenn die Anwendung ausgeführt wird.

Veröffentlichen in IIS

Es gibt mehrere Möglichkeiten, wie Sie die Bereitstellung in IIS mithilfe von Visual Studio und Web Deploy durchführen können:

  • Verwenden Sie die Veröffentlichung mit einem Klick in Visual Studio.
  • Veröffentlichen sie über die Befehlszeile.
  • Erstellen Sie ein Bereitstellungspaket, und installieren Sie es mithilfe des IIS-Managers. Das Paket verfügt über eine .zip-Datei mit allen Dateien und Metadaten, die zum Installieren eines Standorts 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 Methoden. In diesen Tutorials verwenden Sie die ersten beiden Methoden. Informationen zur Verwendung von Bereitstellungspaketen finden Sie unter Bereitstellen einer Webanwendung durch Erstellen und Installieren eines Webbereitstellungspakets in der Webbereitstellungsinhaltszuordnung für Visual Studio und ASP.NET.

Stellen Sie vor der Veröffentlichung sicher, dass Sie Visual Studio im Administratormodus ausführen. Wenn (Administrator) in der Titelleiste nicht angezeigt wird, schließen Sie Visual Studio. Klicken Sie auf der Windows 8 (oder höher) Startseite oder im Windows 7-Startmenü mit der rechten Maustaste auf das Visual Studio-Symbol, 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.

Erstellen des Veröffentlichungsprofils

  1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity (nicht auf das Projekt ContosoUniversity.DAL). Klicken Sie auf Veröffentlichen. Die Seite Veröffentlichen wird angezeigt.

  2. Wählen Sie Neues Profil aus. Das Dialogfeld Veröffentlichungsziel auswählen wird angezeigt.

  3. Wählen Sie IIS, FTP usw. aus. Wählen Sie Profil erstellen aus. Der Veröffentlichungs-Assistent wird angezeigt.

    Registerkarte

  4. Wählen Sie im Dropdownmenü Methode veröffentlichen die Option Web Deploy aus.

  5. Geben Sie unter Server die Zeichenfolge localhost ein.

  6. Geben Sie unter Websitenamedie Zeichenfolge Standardwebsite/ContosoUniversity ein.

  7. Geben Sie unter Ziel-URL die Zeichenfolge ein http://localhost/ContosoUniversity.

    Die Einstellung Ziel-URL ist nicht erforderlich. Wenn Visual Studio die Bereitstellung der Anwendung abgeschlossen hat, wird ihr Standardbrowser automatisch mit dieser URL geöffnet. Wenn Der Browser nach der Bereitstellung nicht automatisch geöffnet werden soll, lassen Sie dieses Feld leer.

  8. Wählen Sie Verbindung überprüfen aus, um sicherzustellen, dass die Einstellungen korrekt 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 war.

    Registerkarte

  9. Wählen Sie Weiter aus, um zur Registerkarte Einstellungen zu gelangen.

  10. Das Dropdownfeld Konfiguration gibt die bereitzustellende Buildkonfiguration an. Lassen Sie ihn auf den Standardwert Release festgelegt. In diesem Tutorial werden keine Debugbuilds bereitgestellt.

  11. Erweitern Sie Dateiveröffentlichungsoptionen. Wählen Sie Dateien aus dem ordner App_Data ausschließen aus.

    In der Testumgebung greift die Anwendung auf die Datenbanken zu, die Sie im lokalen SQL Server Express instance erstellt haben, nicht auf die .mdf Dateien im Ordner App_Data.

  12. Lassen Sie die Kontrollkästchen Precompile während der Veröffentlichung und Zusätzliche Dateien am Ziel entfernen deaktiviert.

    Dateiveröffentlichungsoptionen auf der Registerkarte

    Die Vorkompilierung ist eine Option, die vor allem für große Websites nützlich ist. Dadurch kann die Startzeit reduziert werden, wenn eine Seite nach der Veröffentlichung der Website zum ersten Mal angefordert wird.

    Sie müssen keine zusätzlichen Dateien entfernen, da dies Ihre erste Bereitstellung ist und noch keine Dateien im Zielordner vorhanden sind.

    Hinweis

    Wenn Sie zusätzliche Dateien am Ziel entfernen für eine nachfolgende Bereitstellung auf demselben Standort auswählen, stellen Sie sicher, dass Sie das Vorschaufeature verwenden, damit Sie im Voraus sehen, welche Dateien vor der Bereitstellung gelöscht werden. Das erwartete Verhalten besteht darin, dass Web Deploy Dateien auf dem Zielserver löscht, die Sie in Ihrem Projekt gelöscht haben. Die gesamte Ordnerstruktur unter den Quell- und Zielordnern wird jedoch verglichen. Und in einigen Szenarien löscht Web Deploy möglicherweise Dateien, die Sie nicht löschen möchten.

    Wenn Sie beispielsweise eine Webanwendung in einem Unterordner auf dem Server haben, wenn Sie ein Projekt im Stammordner bereitstellen, wird der Unterordner gelöscht. Möglicherweise verfügen Sie über ein Projekt für die Standard-Website unter contoso.com und ein weiteres Projekt für einen Blog unter contoso.com/blog. Die Bloganwendung befindet sich in einem Unterordner. Wenn Sie beim Bereitstellen der Standard Website zusätzliche Dateien am Ziel entfernen auswählen, wird die Bloganwendung gelöscht.

    Ein weiteres Beispiel: Ihr App_Data Ordner wird möglicherweise unerwartet gelöscht. Bestimmte Datenbanken, z. B. SQL Server Compact, speichern Datenbankdateien im Ordner App_Data. Nach der ersten Bereitstellung möchten Sie die Datenbankdateien in nachfolgenden Bereitstellungen nicht mehr kopieren. Wählen Sie daher auf der Registerkarte Paket/Web veröffentlichen die Option Ausschließen App_Data aus. Nachdem Sie dies ausgeführt haben, wenn Sie zusätzliche Dateien am Ziel entfernen ausgewählt haben, werden Ihre Datenbankdateien und der ordner App_Data selbst beim nächsten Veröffentlichen gelöscht.

Konfigurieren der Bereitstellung für die Mitgliedschaftsdatenbank

Die folgenden Schritte gelten für die Datenbank DefaultConnection im Abschnitt Datenbanken des Dialogfelds.

  1. Geben Sie im Feld Remote Verbindungszeichenfolge die folgende Verbindungszeichenfolge ein, die auf die neue SQL Server Express-Mitgliedschaftsdatenbank verweist.

    Data Source=.\SQLExpress;Initial Catalog=aspnet-ContosoUniversity;Integrated Security=True
    

    Der Bereitstellungsprozess fügt diesen Verbindungszeichenfolge in die bereitgestellte Web.config-Datei ein, da Diese Verbindungszeichenfolge zur Laufzeit verwenden ausgewählt ist.

    Sie können die Verbindungszeichenfolge auch von Server Explorer abrufen. Erweitern Sie unter Server Explorerden Eintrag Daten Connections, und wählen Sie die <Datenbank machinename>\sqlexpress.aspnet-ContosoUniversity aus, und kopieren Sie dann im Fenster Eigenschaften den Wert verbindungszeichenfolge. Diese Verbindungszeichenfolge verfügt über eine zusätzliche Einstellung, die Sie löschen können: Pooling=False.

  2. Wählen Sie Datenbank aktualisieren aus.

    Dies bewirkt, dass das Datenbankschema während der Bereitstellung in der Zieldatenbank erstellt wird. In den nächsten Schritten geben Sie die zusätzlichen Skripts an, die Sie ausführen müssen: eines zum Gewähren von Datenbankzugriff auf den Standardanwendungspool und eines zum Bereitstellen von Daten.

  3. Wählen Sie Datenbankupdates konfigurieren aus.

  4. Wählen Sie im Dialogfeld Datenbank Updates konfigurieren die Option SQL-Skript hinzufügen aus. Navigieren Sie zu dem Grant.sql Skript, das Sie zuvor im Projektmappenordner gespeichert haben.

  5. Wiederholen Sie den Vorgang, um das aspnet-data-dev.sql Skript hinzuzufügen.

    Konfigurieren von Datenbank-Updates für die Mitgliedschaftsdatenbank

  6. Klicken Sie auf Schließen.

Konfigurieren der Bereitstellung für die Anwendungsdatenbank

Wenn Visual Studio eine Entity Framework-Klasse DbContext erkennt, erstellt es einen Eintrag im Abschnitt Datenbanken mit dem Kontrollkästchen Code First-Migrationen ausführen anstelle eines Kontrollkästchens Datenbank aktualisieren. In diesem Tutorial verwenden Sie dieses Kontrollkästchen, um Code First-Migrationen Bereitstellung anzugeben.

In einigen Szenarien verwenden Sie möglicherweise eine DbContext Datenbank, aber Sie möchten den dbDacFx-Anbieter anstelle von Migrationen verwenden, um die Datenbank bereitzustellen. In diesem Fall finden Sie informationen Gewusst wie Bereitstellen einer Code First-Datenbank ohne Migrationen? in der ASP.NET Webbereitstellung auf MSDN.

Die folgenden Schritte gelten für die SchoolContext-Datenbank im Abschnitt Datenbanken des Dialogfelds.

  1. Geben Sie im Feld Remote Verbindungszeichenfolge den folgenden Verbindungszeichenfolge ein, der auf die neue SQL Server Express Anwendungsdatenbank verweist.

    Data Source=.\SQLExpress;Initial Catalog=ContosoUniversity;Integrated Security=True
    

    Der Bereitstellungsprozess fügt diese Verbindungszeichenfolge in die bereitgestellte Web.config-Datei ein, da Diese Verbindungszeichenfolge zur Laufzeit verwenden ausgewählt ist.

    Sie können die Anwendungsdatenbank auch Verbindungszeichenfolge von Server Explorer auf die gleiche Weise abrufen, wie Sie die Mitgliedschaftsdatenbank Verbindungszeichenfolge haben.

  2. Wählen Sie Code First-Migrationen ausführen (wird beim Anwendungsstart ausgeführt).

    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.

Konfigurieren von Veröffentlichungsprofiltransformationen

  1. Klicken Sie auf Schließen. Wählen Sie Ja aus, wenn Sie gefragt werden, ob Sie Änderungen speichern möchten.

  2. Erweitern Sie in Projektmappen-ExplorerEigenschaften, und erweitern Sie PublishProfiles.

  3. Klicken Sie mit der rechten Maustaste auf CustomProfile.pubxml , und benennen Sie es test.pubxml um.

  4. Klicken Sie mit der rechten Maustaste auf Test.pubxml. Wählen Sie Konfigurationstransformation hinzufügen aus.

    Menü

    Visual Studio erstellt die Web.Test.config Transformationsdatei und öffnet sie.

  5. Fügen Sie in der Web.Test.config Transformationsdatei den folgenden Code unmittelbar nach dem öffnenden Konfigurationstag ein.

    <appSettings>
        <add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    </appSettings>
    

    Wenn Sie das Testveröffentlichungsprofil verwenden, legt diese Transformation den Umgebungsindikator auf "Test" fest. Auf der bereitgestellten Website wird "(Test)" nach der Überschrift "Contoso University" H1 angezeigt.

  6. Speichern und schließen Sie die Datei.

  7. Klicken Sie mit der rechten Maustaste auf die Web.Test.config-Datei , und wählen Sie Vorschautransformation aus, um sicherzustellen, dass die von Ihnen codierte Transformation die erwarteten Änderungen erzeugt.

    Das Web.config Vorschaufenster zeigt das Ergebnis des Anwendens der Web.Release.config Transformationen und der Web.Test.config Transformationen an.

Vorschau der Bereitstellungsupdates

  1. Öffnen Sie den Assistenten zum Veröffentlichen von Web erneut (klicken Sie mit der rechten Maustaste auf das Projekt ContosoUniversity, und wählen Sie Veröffentlichen und dann Vorschau) aus.

  2. Wählen Sie im Dialogfeld Vorschau die Option Vorschau starten aus, um eine Liste der Dateien anzuzeigen, die kopiert werden sollen.

    Vorschau veröffentlichen

    Sie können auch den Link Vorschaudatenbank auswählen, um die Skripts anzuzeigen, die in der Mitgliedschaftsdatenbank ausgeführt werden. (Für Code First-Migrationen Bereitstellung werden keine Skripts ausgeführt, sodass es für die Anwendungsdatenbank keine Vorschau gibt.)

  3. Klicken Sie auf Veröffentlichen.

    Wenn Visual Studio sich nicht im Administratormodus befindet, wird möglicherweise eine Berechtigungs-Fehlermeldung angezeigt. 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.

    Output_window_publish_Test

    Wenn Sie die URL im Feld Ziel-URL auf der Registerkarte Verbindung für das Veröffentlichungsprofil eingegeben haben, wird der Browser automatisch mit der Startseite der Contoso University geöffnet, die in IIS auf Ihrem 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 Instructors aus, um zu überprüfen, ob Code First die Datenbank mit Kursleiterdaten ausser Betrieb gesetzt hat. 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.)

Wählen Sie die Registerkarte Schüler aus, um zu überprüfen, ob die bereitgestellte Datenbank keine Kursteilnehmer enthält.

Wählen Sie im Menü Schüler die Option Studenten hinzufügen aus. Fügen Sie einen Kursteilnehmer hinzu, und zeigen Sie den neuen Kursteilnehmer dann auf der Seite Schüler an . Dadurch wird überprüft, 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 "devpwd"). Die Seite Guthaben aktualisieren wird angezeigt. Dadurch wird überprüft, ob das Administratorkonto, das Sie im vorherigen Tutorial erstellt haben, ordnungsgemäß in der Testumgebung bereitgestellt wurde.

Vergewissern Sie sich, dass im Ordner c:\inetpub\wwwroot\ContosoUniversity ein ELMAH-Ordner vorhanden ist, in dem nur die Platzhalterdatei enthalten ist.

Überprüfen sie die ä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.

Öffnen Sie die datei Web.config in der bereitgestellten Anwendung unter C:\inetpub\wwwroot\ContosoUniversity, und sehen Sie, 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:

Database_Publish Verbindungszeichenfolge

Mit diesem zusätzlichen Verbindungszeichenfolge können Sie ein Benutzerkonto für Datenbankschemaupdates und ein anderes Benutzerkonto für den Anwendungsdatenzugriff angeben. Beispielsweise könnten Sie der Anwendung die db_owner Rolle Code First-Migrationen und db_datareader mit db_datawriter Rollen zuweisen. 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.) In diesen Tutorials wird dieses Muster nicht verwendet. Führen Sie die folgenden Schritte aus, um dieses Muster in Ihrem Szenario zu implementieren:

  1. Geben Sie im Assistenten zum Veröffentlichen von Web auf der Registerkarte Einstellungen den Verbindungszeichenfolge ein, der einen Benutzer mit vollständigen Datenbankschemaupdateberechtigungen angibt. Deaktivieren Sie das Kontrollkästchen Dieses Verbindungszeichenfolge zur Laufzeit verwenden. In der bereitgestellten Web.config-Datei wird dies zum DatabasePublish Verbindungszeichenfolge.

  2. Erstellen Sie eine Web.config-Dateitransformation für die Verbindungszeichenfolge, die die Anwendung zur Laufzeit verwenden soll.

Zusammenfassung

Sie haben Ihre Anwendung jetzt in IIS auf Ihrem Entwicklungscomputer bereitgestellt und dort getestet.

Startseite im Test

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 ob 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 Elm ah .

Weitere Informationen

Informationen zum Ausführen von IIS oder IIS Express in Visual Studio finden Sie in den folgenden Ressourcen: