ASP.NET Webbereitstellung mit Visual Studio: Bereitstellen in Test

von Tom Dykstra

In dieser Lernprogrammreihe wird gezeigt, wie Sie eine ASP.NET-Webanwendung für Azure App Service Web-Apps oder einen Drittanbieter-Hostinganbieter mit Visual Studio 2017 bereitstellen (veröffentlichen). Informationen zur Serie finden Sie im ersten Lernprogramm in der Serie.

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

Übersicht

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

Wenn Sie eine Anwendung entwickeln, führen Sie sie aus, und testen Sie sie in Visual Studio. Standardmäßig verwenden Webanwendungsprojekte in Visual Studio 2017 IIS Express als Entwicklungswebserver. IIS Express verhält sich mehr wie voll IIS als der Visual Studio Development Server (auch bekannt als Cassini), der Visual Studio 2017 standardmäßig verwendet. Aber weder der Entwicklungswebserver funktioniert genau wie IIS. Folglich könnte eine App in Visual Studio ordnungsgemäß ausgeführt und getestet werden, aber fehlschlagen, wenn sie in IIS bereitgestellt wird.

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

  1. Stellen Sie Ihre Anwendung auf Ihrem Entwicklungscomputer mit demselben Prozess bereit, den Sie später verwenden, um sie in Ihrer Produktionsumgebung bereitzustellen.

    Sie können Visual Studio so konfigurieren, dass SIE IIS verwenden, wenn Sie ein Webprojekt ausführen, aber das würde den Bereitstellungsprozess nicht testen. Diese Methode überprüft Ihren Bereitstellungsprozess und dass Ihre Anwendung unter IIS ordnungsgemäß ausgeführt wird.

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

    Die Produktionsumgebung für diese Lernprogramme Web-Apps in Azure App Service. Die ideale Testumgebung ist eine zusätzliche Web-App, die im Azure Service erstellt wurde. Obwohl es auf dieselbe Weise wie eine Produktionsweb-App eingerichtet würde, würden Sie es nur für Tests verwenden.

Option 2 ist die zuverlässigste Methode zum Testen. Wenn Sie Option 2 verwenden, müssen Sie die Option 1 nicht unbedingt verwenden. Wenn Sie jedoch für einen Drittanbieter-Hostinganbieter bereitstellen, kann Option 2 möglicherweise nicht möglich oder teuer sein, sodass diese Lernprogrammreihe beide Methoden zeigt. Anleitungen für Option 2 werden im Lernprogramm " Bereitstellung in der Produktionsumgebung " bereitgestellt.

Weitere Informationen zur Verwendung von Webservern in Visual Studio finden Sie in Visual Studio für ASP.NET Webprojekte.

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

Laden Sie das Startprojekt der Contoso University herunter.

Laden Sie die Startlösung und das Projekt der Contoso University Visual Studio herunter und installieren Sie sie. Diese Lösung enthält das abgeschlossene Lernprogramm.

Startprojekt herunterladen

Installieren von IIS

Um iis auf Ihrem Entwicklungscomputer bereitzustellen, bestätigen Sie, dass IIS und Web Deploy installiert sind. 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, wechseln Sie zum nächsten Abschnitt.

  1. Es wird empfohlen, das Web Platform Installer (WPI) zum Installieren von IIS und Web Deploy zu verwenden. WPI installiert bei Bedarf eine empfohlene IIS-Konfiguration, die IIS und Web Deploy-Voraussetzungen enthält.

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

    • Verwenden Sie das Webplattform-Installationsprogramm, um IIS und Web Deploy zu installieren:

      Installieren von IIS mithilfe von WPI

      Installieren von Web Deploy mithilfe von WPI

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

    • Öffnen Sie Systemsteuerung>Programs>Programme und FeaturesAktivieren oder Deaktivieren von Windows-Features>.

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

    • Bestätigen Sie, dass ASP.NET 4.7 ausgewählt ist.

      Wählen Sie ASP.NET 4.7 aus

    • Bestätigen Sie, dass world Wide Web Services and IIS Management Console ausgewählt ist. Dadurch wird IIS- und IIS-Manager installiert.

      Auswählen von World Wide Web Services

    • Klicken Sie auf OK. Dialogfeldnachrichten, die angeben, dass die Installation stattfindet.

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 "Ausführen" auf der Startseite ein. Wählen Sie unter Windows 7 die Option "Ausführen" im Startmenü aus. Wenn "Ausführen" im Startmenü nicht vorhanden ist, klicken Sie mit der rechten Maustaste auf die Taskleiste, wählen Sie "Eigenschaften" aus, wählen Sie die Registerkarte "Startmenü" aus, wählen Sie "Anpassen" aus, und wählen Sie "Befehl ausführen" aus.)

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

  3. Erweitern Sie im Bereich "Verbindungen " den Serverknoten, und wählen Sie "Anwendungspools" aus. Im Bereich "Anwendungspools ", wenn DefaultAppPool der .NET Framework Version 4 wie in der folgenden Abbildung zugewiesen ist, wechseln Sie zum nächsten Abschnitt.

    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 wie Sie ASP.NET 4.5 auf Windows 8 und Windows Server 2012 installieren. Öffnen Sie für Windows 7 ein Eingabeaufforderungsfenster, indem Sie mit der rechten Maustaste im Windows-Startmenü auf die Eingabeaufforderung klicken und dann "Als Administrator ausführen" auswählen. Führen Sie aspnet_regiis.exe aus, um ASP.NET 4 in IIS mithilfe der folgenden Befehle zu installieren. (Ersetzen Sie in 32-Bit-Systemen "Framework64" durch "Framework".)

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

    Dieser Befehl erstellt neue Anwendungspools für die .NET Framework 4, aber der Standardanwendungspool bleibt auf 2.0 festgelegt. Sie stellen eine Anwendung bereit, die auf .NET 4 auf diesen Anwendungspool ausgerichtet ist, so ändern Sie den Anwendungspool in .NET 4.

  5. Wenn Sie 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 "Anwendungspools " die Option "DefaultAppPool" aus. Wählen Sie im Bereich "Aktionen " die Option "Grundlegende Einstellungen" 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 sind jetzt bereit, eine Webanwendung in IIS zu veröffentlichen. Erstellen Sie zunächst jedoch Datenbanken für Tests.

SQL Server Express installieren

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

Um SQL Server Express zu installieren, laden Sie es aus dem Download Center 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 neue SQL Server eigenständige Installation aus, oder fügen Sie einer vorhandenen Installation Features hinzu, und folgen Sie den Anweisungen, die die Standardoptionen akzeptieren. Akzeptieren Sie im Installations-Assistenten die Standardeinstellungen. Weitere Informationen zu Installationsoptionen finden Sie unter "Installieren SQL Server vom Installations-Assistenten (Setup)".

Erstellen von 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 auf zwei separate Datenbanken oder auf eine einzelne Datenbank bereitstellen. Das Kombinieren von Datenbanken erleichtert die Verknüpfungen zwischen ihnen.

Wenn Sie für einen Drittanbieter-Hostinganbieter bereitstellen, kann Ihr Hostingplan Ihnen auch einen Grund geben, sie zu kombinieren. Der Anbieter kann beispielsweise mehr für mehrere Datenbanken berechnen oder sogar nicht mehr als eine Datenbank zulassen.

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

Wählen Sie im Menü "Ansicht " in Visual Studio den Server-Explorer (Datenbank-Explorer in Visual Web Developer) aus. Klicken Sie mit der rechten Maustaste auf Datenverbindungen, 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" ".\SQLExpress" im Feld "Servername" und "aspnet-ContosoUniversity" im Feld "Neuer Datenbankname" ein. Klicken Sie auf OK.

Erstellen von aspnet-ContosoUniversity

Führen Sie dasselbe Verfahren aus, um eine neue SQL Server Express School-Datenbank namens "ContosoUniversitySchool" zu erstellen.

Der Server-Explorer zeigt die beiden neuen Datenbanken an.

Neue Datenbanken im Server-Explorer

Erstellen eines Grantskripts für die neuen Datenbanken

Wenn die Anwendung auf Ihrem Entwicklungscomputer in IIS ausgeführt wird, verwendet die Anwendung die Anmeldeinformationen des Standardanwendungspools, um auf die Datenbank zuzugreifen. 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 es 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 Contoso University-Lösung. Klicken Sie mit der rechten Maustaste auf die Projektmappe (nicht 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 wurde entwickelt, um mit SQL Server Express 2012 oder höher und mit den IIS-Einstellungen in Windows 10, Windows 8 oder Windows 7 zu arbeiten, wie sie in diesem Lernprogramm angegeben sind. Wenn Sie eine andere Version von SQL Server oder Windows verwenden oder IIS auf Ihrem Computer anders einrichten, sind möglicherweise Änderungen an diesem Skript erforderlich. Weitere Informationen zu SQL Server Skripts finden Sie unter SQL Server Books Online.

Hinweis

Sicherheitshinweis Dieses Skript gewährt db_owner dem Benutzer Berechtigungen, die zur Laufzeit auf die Datenbank zugreifen. Dies ist das, was Sie in der Produktionsumgebung haben. In einigen Szenarien möchten Sie möglicherweise einen Benutzer mit vollständigen Datenbankschemaaktualisierungsberechtigungen nur für die Bereitstellung angeben und einen anderen Benutzer angeben, der nur Berechtigungen zum Lesen und Schreiben von Daten besitzt. Weitere Informationen finden Sie unter Überprüfen der automatischen Web.config Änderungen für Code First-Migrationen weiter unten in diesem Lernprogramm.

Ausführen des Grantskripts in der Anwendungsdatenbank

Sie können das Veröffentlichungsprofil so konfigurieren, dass das Grant-Skript in der Mitgliedschaftsdatenbank während der Bereitstellung ausgeführt wird, da diese Datenbankbereitstellung den dbDacFx-Anbieter verwendet. Sie können skripts während Code First-Migrationen Bereitstellung nicht ausführen, was die Bereitstellung der Anwendungsdatenbank ist. Dies bedeutet, dass Sie das Skript vor der Bereitstellung in der Anwendungsdatenbank manuell ausführen müssen.

  1. Öffnen Sie in Visual Studio die zuvor erstellte Grant.sql-Datei .

  2. Wählen Sie Verbinden.

    Schaltfläche „Verbinden“

  3. Geben Sie im Dialogfeld "Mit Server verbinden " .\SQLExpress als Servername ein. Wählen Sie Verbinden.

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

    Wählen Sie in der Dropdownliste der Datenbank ContosoUniversity aus. Wählen Sie

Die Standardanwendungspoolidentität verfügt jetzt über ausreichende Berechtigungen in der Anwendungsdatenbank für Code First-Migrationen, um die Datenbanktabellen zu erstellen, wenn die Anwendung ausgeführt wird.

Veröffentlichen in IIS

Es gibt verschiedene Möglichkeiten, wie Sie iis mithilfe von Visual Studio und Web Deploy bereitstellen können:

  • Verwenden Sie Visual Studio mit einem Klick auf "Veröffentlichen".
  • 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 einer Website in IIS erforderlich sind.
  • Erstellen Sie ein Bereitstellungspaket, und installieren Sie es mithilfe der Befehlszeile.

Der Prozess, den Sie in den vorherigen Lernprogrammen durchlaufen haben, um Visual Studio zum Automatisieren von Bereitstellungsaufgaben einzurichten, gilt für alle diese Methoden. In diesen Lernprogrammen verwenden Sie die ersten beiden Methoden. Informationen zur Verwendung von Bereitstellungspaketen finden Sie unter Bereitstellen einer Webanwendung, indem Sie ein Webbereitstellungspaket in der Webbereitstellungsinhaltszuordnung für Visual Studio und ASP.NET erstellen und installieren.

Stellen Sie vor der Veröffentlichung sicher, dass Sie Visual Studio im Administratormodus ausführen. Wenn in der Titelleiste ( Administrator) nicht angezeigt wird, schließen Sie Visual Studio. Klicken Sie auf der Startseite von Windows 8 (oder höher) 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 iis auf dem lokalen Computer veröffentlichen.

Erstellen des Veröffentlichungsprofils

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

  2. Wählen Sie "Neues Profil" aus. Das Dialogfeld "Ziel veröffentlichen" wird angezeigt.

  3. Wählen Sie IIS, FTP usw. aus. Wählen Sie " Profil erstellen" aus. Der Assistent zum Veröffentlichen wird angezeigt.

    Registerkarte

  4. Wählen Sie im Dropdownmenü "Veröffentlichen" die Option "Web Bereitstellen" aus.

  5. Geben Sie für Serverden localhost ein.

  6. Geben Sie für den Websitenamendie Standardwebsite/ContosoUniversity ein.

  7. Geben Sie für die Ziel-URL die Eingabetaste http://localhost/ContosoUniversityein.

    Die Ziel-URL-Einstellung ist nicht erforderlich. Wenn Visual Studio die Bereitstellung der Anwendung abgeschlossen hat, wird der 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 zu überprüfen, ob die Einstellungen korrekt sind, und Sie können eine Verbindung mit IIS auf dem lokalen Computer herstellen.

    Ein grünes Häkchen überprüft, ob die Verbindung erfolgreich ist.

    Registerkarte

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

  10. Das Dropdownfeld "Konfiguration " gibt die zu bereitstellende Buildkonfiguration an. Lassen Sie ihn auf den Standardwert von Release festgelegt. In diesem Lernprogramm stellen Sie keine Debugbuilds bereit.

  11. Erweitern sie die Optionen zum Veröffentlichen von Dateien. Wählen Sie " Dateien aus dem ordner App_Data ausschließen" aus.

    In der Testumgebung greift die Anwendung auf die Datenbanken zu, die Sie in der lokalen SQL Server Express Instanz erstellt haben, nicht auf die MDF-Dateien im ordner App_Data.

  12. Lassen Sie das Precompile während der Veröffentlichung verlassen und entfernen Sie zusätzliche Dateien bei Zielkontrollkästchen deaktiviert.

    Dateiveröffentlichungsoptionen auf der Registerkarte

    Vorkompilierung ist eine Option, die hauptsächlich für große Websites nützlich ist. Es kann die Startzeit verringern, wenn eine Seite zum ersten Mal angefordert wird, nachdem die Website veröffentlicht wurde.

    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 weitere Dateien am Zielort für eine nachfolgende Bereitstellung auf derselben Website auswählen, stellen Sie sicher, dass Sie das Vorschaufeature verwenden, damit Sie vorab sehen, welche Dateien vor der Bereitstellung gelöscht werden. Das erwartete Verhalten besteht darin, dass Web Deploy Dateien auf dem Zielserver löscht, den 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 über eine Webanwendung in einem Unterordner auf dem Server verfügen, wenn Sie ein Projekt im Stammordner bereitstellen, wird der Unterordner gelöscht. Möglicherweise haben Sie ein Projekt für die Hauptwebsite bei contoso.com und ein anderes Projekt für einen Blog bei contoso.com/blog. Die Bloganwendung befindet sich in einem Unterordner. Wenn Sie beim Bereitstellen der Hauptwebsite weitere Dateien am Ziel entfernen , wird die Bloganwendung gelöscht.

    Ein weiteres Beispiel kann Ihr App_Data Ordner unerwartet gelöscht werden. Bestimmte Datenbanken, z. B. SQL Server Compact Datenbankdateien im ordner App_Data speichern. Nach der anfänglichen Bereitstellung möchten Sie nicht mehr die Datenbankdateien in nachfolgenden Bereitstellungen kopieren, sodass Sie auf der Registerkarte "Paket/Veröffentlichen" App_Data auswählen. Nachdem Sie dies tun, wenn Sie zusätzliche Dateien am Ziel 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 DefaultConnection-Datenbank im Abschnitt "Datenbanken " des Dialogfelds.

  1. Geben Sie im Feld "Remoteverbindungszeichenfolge" 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 diese Verbindungszeichenfolge in die bereitgestellte Web.config Datei ein, da diese Verbindungszeichenfolge zur Laufzeit ausgewählt ist.

    Sie können auch die Verbindungszeichenfolge aus dem Server-Explorer abrufen. Erweitern Sie im Server-ExplorerDatenverbindungen , und wählen Sie die <Datenbank "machinename>\sqlexpress.aspnet-ContosoUniversity " aus, und kopieren Sie dann im Eigenschaftenfenster 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.

    Dadurch wird das Datenbankschema während der Bereitstellung in der Zieldatenbank erstellt. In den nächsten Schritten geben Sie die zusätzlichen Skripts an, die Sie ausführen müssen: eine, um datenbankzugriff auf den Standardanwendungspool und eine zum Bereitstellen von Daten zu gewähren.

  3. Wählen Sie " Datenbankupdates konfigurieren" aus.

  4. Wählen Sie im Dialogfeld "Datenbank konfigurieren Aktualisierungen" die Option "SQL-Skript hinzufügen" aus. Navigieren Sie zum Grant.sql-Skript , das Sie zuvor im Lösungsordner gespeichert haben.

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

    Konfigurieren von Datenbank-Aktualisierungen 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 sie einen Eintrag im Abschnitt "Datenbanken", das ein Kontrollkästchen "Ausführen Code First-Migrationen" anstelle eines Kontrollkästchens "Datenbank aktualisieren" aufweist. Für dieses Lernprogramm 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 zum Bereitstellen der Datenbank verwenden. In diesem Fall finden Sie Gewusst wie Bereitstellen einer Code First-Datenbank ohne Migrationen? in der ASP.NET Häufig gestellte Fragen zur Webbereitstellung auf MSDN.

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

  1. Geben Sie im Feld "Remoteverbindungszeichenfolge" die folgende Verbindungszeichenfolge ein, die 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 ausgewählt ist.

    Sie können auch die Anwendungsdatenbankverbindungszeichenfolge vom Server-Explorer auf dieselbe Weise abrufen, wie Sie die Verbindungszeichenfolge für die Mitgliedschaftsdatenbank erhalten.

  2. Wählen Sie "Ausführen" Code First-Migrationen (wird auf Dem Anwendungsstart ausgeführt) aus.

    Diese Option führt dazu, dass der Bereitstellungsprozess die bereitgestellte Web.config Datei so konfiguriert, dass der MigrateDatabaseToLatestVersion Initializer angegeben wird. Dieser Initializer 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, erweitern Sie PublishProfiles.

  3. Klicken Sie mit der rechten Maustaste auf CustomProfile.pubxml , und benennen Sie sie "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 derWeb.Test.config Transformationsdatei unmittelbar nach dem Öffnen des Konfigurationstags den folgenden Code ein.

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

    Wenn Sie das Testveröffentlichungsprofil verwenden, legt diese Transformation die Umgebungsanzeige 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 fenster Web.config Vorschau zeigt das Ergebnis der Anwendung der Web.Release.configTransformationen und der Web.Test.config Transformationen.

Vorschau der Bereitstellungsupdates

  1. Öffnen Sie den Veröffentlichungsweb-Assistenten erneut (klicken Sie mit der rechten Maustaste auf das ContosoUniversity-Projekt, 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.

    Vorschau veröffentlichen

    Sie können auch den Vorschaudatenbanklink auswählen, um die Skripts anzuzeigen, die in der Mitgliedschaftsdatenbank ausgeführt werden. (Es werden keine Skripts für die bereitstellung Code First-Migrationen ausgeführt, sodass für die Anwendungsdatenbank keine Vorschau angezeigt werden kann.)

  3. Wählen Sie Veröffentlichen aus.

    Wenn Visual Studio nicht im Administratormodus ist, erhalten Sie möglicherweise eine Fehlermeldung zu Berechtigungen. Schließen Sie Visual Studio, öffnen Sie es im Administratormodus, und versuchen Sie es erneut zu veröffentlichen.

    Wenn Visual Studio im Administratormodus ist, meldet das Ausgabefenster erfolgreich erstellen und veröffentlichen.

    Output_window_publish_Test

    Wenn Sie die URL im Feld "Ziel-URL " auf der Registerkarte " Profilverbindung veröffentlichen" eingegeben haben, wird der Browser automatisch auf der Contoso University Home page geöffnet, die auf Ihrem Computer in IIS ausgeführt wird.

Testen in der Testumgebung

Beachten Sie, dass der Umgebungsindikator "(Test)" anstelle von "(Dev)" zeigt, dass die Web.config Transformation für den Umgebungsindikator erfolgreich war.

Führen Sie die Seite "Lehrer" aus, um zu überprüfen, ob Code Zuerst die Datenbank mit Kursleiterdaten gesamert hat. Wenn Sie diese Seite auswählen, kann es einige Minuten dauern, bis Code zuerst die Datenbank erstellt und dann die Seed Methode ausführt. (Es wurde nicht ausgeführt, wenn Sie auf der Startseite waren, weil die Anwendung noch nicht versucht hat, auf die Datenbank zuzugreifen.)

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

Wählen Sie " Kursteilnehmer hinzufügen " im Menü "Kursteilnehmer " aus. Fügen Sie einen Kursteilnehmer hinzu, und zeigen Sie dann den neuen Kursteilnehmer auf der Seite "Kursteilnehmer " an. Dadurch wird überprüft, dass 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 Seite " Anmelden " angezeigt wird. Geben Sie die Anmeldeinformationen des Administratorkontos ein, die Sie zuvor erstellt haben ("Administrator" und "devpwd"). Die Seite "Guthaben aktualisieren " wird angezeigt. Dadurch wird überprüft, dass das administratorkonto, das Sie im vorherigen Lernprogramm erstellt haben, ordnungsgemäß für die Testumgebung bereitgestellt wurde.

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

Überprüfen der automatischen Web.config Änderungen für Code First-Migrationen

Öffnen Sie die Web.config Datei 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 Web.config Datei 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 erstellt außerdem eine neue Verbindungszeichenfolge für Code First-Migrationen, die ausschließlich zum Aktualisieren des Datenbankschemas verwendet werden soll:

Database_Publish Verbindungszeichenfolge

Mit dieser zusätzlichen Verbindungszeichenfolge können Sie ein Benutzerkonto für Datenbankschemaupdates und ein anderes Benutzerkonto für den Anwendungsdatenzugriff angeben. Sie können beispielsweise die db_owner Rolle Code First-Migrationen und db_datareader mit db_datawriter Rollen der Anwendung zuweisen. Dies ist ein gängiges Verteidigungsmuster, das potenziell bösartigen Code in der Anwendung verhindert, das Datenbankschema zu ändern. (Dies kann beispielsweise in einem erfolgreichen SQL-Injektionsangriff geschehen.) Diese Lernprogramme verwenden dieses Muster nicht. Führen Sie die folgenden Schritte aus, um dieses Muster in Ihrem Szenario zu implementieren:

  1. Geben Sie im Assistenten " Web veröffentlichen" auf der Registerkarte "Einstellungen " die Verbindungszeichenfolge ein, die einen Benutzer mit vollständigen Datenbankschemaupdateberechtigungen angibt. Deaktivieren Sie das Kontrollkästchen "Diese Verbindungszeichenfolge zur Laufzeit verwenden ". In der bereitgestellten Web.config Datei wird dies zur 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 auf Ihrem Entwicklungscomputer für IIS bereitgestellt und dort getestet.

Startseite in Test

Dadurch wird überprüft, dass der Bereitstellungsprozess den Inhalt der Anwendung an den richtigen Speicherort kopiert hat (ohne die Dateien, die Sie nicht bereitstellen möchten) und auch, dass web Deploy iis während der Bereitstellung ordnungsgemäß konfiguriert hat. Im nächsten Lernprogramm führen Sie einen weiteren Test aus, der eine Bereitstellungsaufgabe findet, die noch nicht ausgeführt wurde: Festlegen von Ordnerberechtigungen im Elm ah-Ordner .

Weitere Informationen

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

Informationen zu problemen, die auftreten können, wenn Ihre Anwendung in mittlerer Vertrauen ausgeführt wird, finden Sie unter Hosting ASP.NET Applications in Medium Trust auf der vier Jungs von Rolla-Website.