Freigeben über


Übersicht über die Bereitstellung von ASP.NET-Webanwendungsprojekten

Nachdem Sie in Visual Studio 2010 ein ASP.NET-Webanwendungsprojekt oder ein ASP.NET-Websiteprojekt erstellt haben, stellen Sie das Projekt in der Regel auf einem Webserver bereit, auf dem andere auf die Anwendung zugreifen können. Die Bereitstellung umfasst in der Regel mehr als das bloße Kopieren der Anwendungsdateien von einem Server auf einen anderen. Sie müssen möglicherweise auch zusätzliche Aufgaben ausführen, z. B.:

  • Ändern der Web.config-Dateieinstellungen, die in an die jeweilige Zielumgebung angepasst werden müssen, z. B. Einstellungen zum Debuggen oder Datenbankverbindungszeichenfolgen

  • Verteilen von Daten oder Datenstrukturen in Datenbanken, die von der Webanwendung verwendet werden

  • Konfigurieren von IIS-Einstellungen auf dem Zielcomputer, z. B. Anwendungspool, Authentifizierungsmethode, Zulassen einer Verzeichnissuche und Fehlerbehandlung

  • Installieren von Sicherheitszertifikaten.

  • Festlegen von Werten in der Registrierung des Zielcomputers

  • Installieren von Anwendungsassemblys im globalen Assemblycache (GAC) auf dem Zielcomputer

Eine Erweiterung für Microsoft Internet Information Services (IIS) mit dem Namen Web Deploy kann zum Automatisieren der meisten Bereitstellungsaufgaben verwendet werden. Visual Studio stellt Tools bereit, die mit Web Deploy interagieren und das Bereitstellen eines Webanwendungsprojekts für Sie einfacher machen.

Hinweis

Bei diesem Thema geht es um Webanwendungen, die mit einer Webanwendungsprojektvorlage erstellt werden.Sie können Webanwendungen auch mithilfe einer Websiteprojektvorlage erstellen.Informationen zum Bereitstellen von Websiteprojekten finden Sie unter Übersicht über die Bereitstellung von ASP.NET-Websiteprojekten.

Dieses Thema enthält folgende Abschnitte:

  • Webbereitstellungspakete

  • One-Click-Veröffentlichung

  • Unternehmensszenarien

  • Drittanbieterhosting-Szenarien

  • Transformation der Web.config-Datei

  • Bereitstellen einer SQL Server-Datenbank

  • Erweitern der Webpublishingpipeline

Weitere Informationen zu den Themen, die in dieser Übersicht erläutert werden, finden Sie unter Einstieg in die ASP.NET-Bereitstellung.

Webbereitstellungspakete

Sie können ein Webanwendungsprojekt bereitstellen, indem Sie mit Visual Studio ein Webbereitstellungspaket erstellen und das Paket auf dem Zielserver installieren. Ein Bereitstellungspaket ist eine komprimierte Datei (ZIP-Datei) mit allen Informationen, die erforderlich sind, um die Anwendung in IIS einzurichten, die Anwendungsdateien zu kopieren und verwandte Ressourcen einzurichten, beispielsweise Datenbanken.

Sie können das Bereitstellungspaket erstellen und es dann separat installieren. Alternativ können Sie die One-Click-Veröffentlichung verwenden, die eine Remotebereitstellung in einem Schritt ermöglicht. (Standardmäßig wird bei einer One-Click-Veröffentlichung kein Paket erstellt, aber Sie können angeben, dass ein Paket erstellt werden soll, falls erforderlich.)

Zusätzlich zu den Quelldateien und den Binärdateien der Anwendung umfasst ein Bereitstellungspaket normalerweise auch Dateien, die die folgenden Arten von Informationen enthalten:

  • IIS-Einstellungen, z. B. Anwendungspool, Authentifizierungsmethode, Zulassen einer Verzeichnissuche und Fehlerbehandlung.

  • Datenbankskripts zum Verteilen von Änderungen an Datenbankdaten oder Datenbankstrukturen.

  • Parameter, die Werte enthalten, die bei der Installation des Pakets ggf. geändert werden müssen, z. B. Einstellungen zum Debuggen oder Verbindungszeichenfolgen.

Der Paketerstellungsprozess in Visual Studio ist erweiterbar. Hier sind einige Beispiele für Informationen, die Sie in ein Paket einfügen können, die aber benutzerdefinierte Erweiterungen erfordern:

  • Sicherheitszertifikate.

  • Windows-Registrierungseinstellungen.

  • Assemblys (DLL-Dateien), die im globalen Assemblycache (GAC) auf dem Zielcomputer installiert sein müssen.

Angeben der Inhalte eines Bereitstellungspakets

Anhand der Einstellungen, die Sie auf der Registerkarte Web packen/veröffentlichen der Projekteigenschaftenseite erstellen, wird bestimmt, was in ein Bereitstellungspaket eingefügt werden soll. Die folgende Abbildung zeigt die Registerkarte Web packen/veröffentlichen.

Dialogfeld "Verpacken/Veröffentlichen"

Datenbankbezogene Einstellungen, die die Paketerstellung betreffen, werden auf der Registerkarte SQL packen/veröffentlichen eingegeben, die weiter unten in diesem Thema beschrieben wird.

Mit diesen zwei Registerkarten können Sie die am häufigsten verwendeten Einstellungen aktualisieren. Andere Einstellungen, die weniger häufig verwendet werden, werden in der Visual Studio-Projektdatei (VBPROJ-Datei oder CSPROJ-Datei) gespeichert und können durch direktes Bearbeiten dieser Datei geändert werden.

Erstellen eines Bereitstellungspakets

Sie können ein Paket auf die folgende Arten erstellen:

  • Verwenden von Tools in Visual Studio

  • Direktes Verwenden des MSBuild-Befehls über die Befehlszeile

  • Indirektes Verwenden des MSBuild-Befehls von PowerShell oder Team Build aus

Installieren eines Bereitstellungspakets

Nachdem Sie ein Bereitstellungspaket erstellt haben, installieren Sie es auf dem Zielcomputer. Web Deploy verwendet die Informationen im Paket, um IIS zu konfigurieren, Datenbanken einzurichten, Ordnerstrukturen zu erstellen, Dateien in Ordnerstrukturen zu kopieren und sonstige Aufgaben durchzuführen, die zum Bereitstellen der Anwendung erforderlich sind.

Sie können ein Paket auf die folgende Arten installieren:

  • Verwenden von Web Deploy über die Befehlszeile

  • Verwenden Sie eine von Visual Studio erstellte CMD-Datei, die die Web Deploy-Befehle zum Installieren des Pakets enthält. Web Deploy-Befehle können lang und komplex sein, und diese Datei wird bereitgestellt, um die Installation eines Pakets über die Befehlszeile zu erleichtern.

  • Verwenden von IIS-Manager

  • Führen Sie Web Deploy-Befehle mithilfe von PowerShell aus.

Sie können bei der Erstellung eines Pakets Parameter einschließen. Diese sind Name-Wert-Paare, für die Sie bei der Paketerstellung einen Standardwert angeben, für die aber bei der Paketinstallation ein neuer Wert angegeben werden kann. Wenn Sie das Paket mithilfe von IIS-Manager installieren, werden die Parameternamen mit Textfeldern angezeigt, damit Sie neue Werte eingeben können. Wenn Sie das Paket installieren, indem Sie Web Deploy über die Befehlszeile ausführen, können Sie Parameterwerte in einer XML-Datei angeben.

Speicherort und Inhalt des Paketordners

Standardmäßig werden die Bereitstellungspakete in dem Ordner generiert, der in der IntermediateOutputPath-MSBuild-Eigenschaft angegeben ist. Die IntermediateOutputPath-Eigenschaft verweist (wie in der folgenden Abbildung des Fensters Projektmappen-Explorer gezeigt) auf den Ordner "obj\Configuration" des Projekts:

Projektmappen-Explorer mit Dateien für das Bereitstellungspaket

Die vordefinierten Namen für Konfiguration sind Debug (wie in der vorangehenden Abbildung gezeigt) und Release. Sie können zusätzliche Buildkonfigurationen definieren.

Das Paket wird in einem Ordner mit dem Namen "Package" erstellt. Der Ordner "Package" enthält die folgenden Dateien:

  • Projektname.zip. Dies ist das eigentliche Bereitstellungspaket.

  • Projektname.deploy.cmd. Dies ist eine Befehlszeilen-Batchdatei, die Web Deploy aufruft, damit es für Sie einfacher ist, das Paket über die Befehlszeile zu installieren.

  • Projektname.SetParameters.xml. Diese Datei enthält Parameter, die an Web Deploy übergeben werden, wenn Sie das Paket mithilfe der Datei "deploy.cmd" installieren. Für jeden Parameter wird ein Standardwert angegeben, der anhand der Visual Studio-Paketeinstellungen ermittelt wird. Sie können diese Werte z. B. ändern, wenn Sie die Webanwendung auf mehreren Servern installieren möchten, aber für jeden Server verschiedene Einstellungen verwenden.

  • Projektname.SourceManifest.xml. Diese Datei enthält Einstellungen, die von Visual Studio an Web Deploy übergeben werden und die von Web Deploy zum Erstellen des Webpakets verwendet werden. Diese Datei ist für Web Deploy nur zum Erstellen des Pakets erforderlich. Sie wird nicht verwendet, wenn das Paket installiert wird.

Wenn Sie sich entscheiden, das Paket nicht als ZIP-Datei zu erstellen, werden die Ordner und Dateien, die in der ZIP-Datei gespeichert worden wären, in einen Ordner namens "Archive" eingefügt. Der erste Knoten der Dateien "deploy.cmd", "SetParameter.xml" und "SourceManifest.xml" ist in diesem Fall "Archive" und nicht Projektname.

Die Beziehungen zwischen Visual Studio, Web Deploy und diesen Dateien werden in der folgenden Abbildung gezeigt:

Dateien für das Bereitstellungspaket, die von Visual Studio erstellt wurden

One-Click-Veröffentlichung

Sie können auch eine Remotebereitstellung mit der Visual Studio-Funktion One-Click-Veröffentlichung durchführen. In diesem Fall geben Sie in einem Veröffentlichungsprofil an, wie und wo Visual Studio die Anwendung bereitstellen soll. Die folgende Abbildung zeigt das Dialogfeld Profil veröffentlichen.

Dialogfeld "Profil veröffentlichen"

Wenn Sie One-Click-Veröffentlichung verwenden, um die Anwendung bei einem Hostinganbieter (Drittanbieter) bereitzustellen, stellt der Hostinganbieter Ihnen in der Regel die Einstellungen bereit, die Sie für das Dialogfeld Profil veröffentlichen benötigen.

Wenn Sie alle Einstellungen zum Veröffentlichen angegeben haben, können Sie in diesem Dialogfeld auf die Schaltfläche Veröffentlichen oder auf der Symbolleiste auf Webveröffentlichung mit einem Klick klicken. Die Anwendung wird dann von Visual Studio auf dem Zielcomputer bereitgestellt. Wenn Sie auf die Schaltfläche Veröffentlichen klicken, nachdem ein Webanwendungsprojekt bereits bereitgestellt wurde, werden nur die geänderten Elemente erneut bereitgestellt.

Sie können mehrere Profile erstellen, um Bereitstellungen auf verschiedenen Servern oder auf dem gleichen Server mit unterschiedlichen Einstellungen durchzuführen.

Unternehmensszenarien

In einer Unternehmensumgebung werden Anwendungen in der Regel von einem Entwicklungscomputer aus in einer oder mehreren Zwischenumgebungen bereitgestellt, z. B. auf einem Testserver oder einem Bereitstellungsserver. Von einer der Zwischenumgebungen aus führen Sie dann eine Bereitstellung in der Produktionsumgebung durch.

Zu den typischen Szenarien für die Erstbereitstellung von der Entwicklungsumgebung aus gehören:

  • Erstellen eines Bereitstellungspakets mit Visual Studio und manuelle Installation des Bereitstellungspakets

  • Erstellen und Installieren des Bereitstellungspakets mit einem Befehlszeilenprozess Dies wird normalerweise im Batchmodus über ein Repository der Quellcodeverwaltung mithilfe von MSBuild durchgeführt.

  • Verwenden Sie die One-Click-Veröffentlichung. Diese Option ist verfügbar, wenn der Entwicklungscomputer Remotezugriff auf die Zielumgebung hat, wenn der Zielcomputer für die von Ihnen ausgewählte Veröffentlichungsmethode eingerichtet ist und wenn Sie über entsprechende Berechtigungen für den Zielcomputer verfügen. Standardmäßig wird bei einer One-Click-Veröffentlichung kein Paket erstellt. Sie können jedoch angeben, dass ein Paket zur Verwendung als Archiv oder Sicherung erstellt werden soll.

Um nach der Erstbereitstellung von einer Umgebung aus eine Bereitstellung in der nächsten Umgebung durchzuführen, können Sie das gleiche Paket verwenden, das für die Erstbereitstellung erstellt wurde. Alternativ können Sie mit Web Deploy ein neues Paket auf dem Computer erstellen, von dem aus Sie die Bereitstellung durchführen.

Die folgende Abbildung zeigt einige typische Unternehmensszenarien.

Typische Szenarios für die Webbereitstellung im Unternehmen

Drittanbieterhosting-Szenarien

Wenn das Hosting von einem Drittanbieter durchgeführt wird und die Anwendung direkt vom Entwicklungscomputer aus im Hostingunternehmen bereitgestellt wird, haben Sie folgende Möglichkeiten:

  • Verwenden Sie die Visual Studio-Funktion zur One-Click-Veröffentlichung.

  • Erstellen Sie ein Paket, und installieren Sie es mithilfe von IIS-Managers remote.

Im Hostingunternehmen befindet sich Ihre Anwendung möglicherweise in einer freigegebenen Umgebung oder auf dedizierten Servern. Für Anwendungen, die in freigegebenen Umgebungen gehostet werden, sind die Möglichkeiten zum Konfigurieren der Umgebung normalerweise erheblich eingeschränkt. In einer freigegebenen Hostumgebung wird Ihnen in der Regel nicht gestattet, die IIS-Einstellungen zu ändern.

Die folgende Abbildung zeigt einige typische Drittanbieterhostingszenarien.

Typische Bereitstellungsszenarios für das Drittanbieterhosting

Transformation der Web.config-Datei

Die Web.config-Dateien enthalten normalerweise Einstellungen, die sich je nach der Umgebung, in der die Anwendung ausgeführt wird, unterscheiden. Sie müssen z. B. die folgenden Änderungen vornehmen, wenn Sie eine Web.config-Datei auf einem Zielserver bereitstellen:

  • Ändern der Datenbankverbindungszeichenfolge, um auf die Produktionsdatenbank zu verweisen.

  • Deaktivieren des Debuggings in der Produktionsumgebung.

  • Entfernen vertraulicher Informationen, z. B. Verbindungszeichenfolgen, wenn Sie ein Paket für eine Communitywebsite bereitstellen.

Um Änderungen an einer Web.config-Datei manuell zu verwalten, können Sie wie folgt vorgehen:

  • Bearbeiten Sie die Web.config-Datei auf dem Zielserver bei jeder Projektbereitstellung.

  • Verwalten Sie separate Versionen der Web.config-Datei für jede Umgebung (vielleicht in separaten Ordnern oder mit unterschiedlichen Namen), und kopieren Sie nur die Version, die für die Zielumgebung der Bereitstellung geeignet ist.

  • Erstellen Sie XSLT-Dateien, um die Web.config-Datei zu transformieren, und übernehmen Sie die Transformationen bei der Bereitstellung der Anwendung.

Für Webanwendungsprojekte stellt ASP.NET Tools bereit, die das Ändern (Transformieren) von Web.config-Dateien bei der Bereitstellung automatisieren. Für jede Umgebung, in der Sie eine Bereitstellung durchführen möchten, erstellen Sie eine Transformationsdatei, in der nur die Unterschiede in der Web.config-Datei für diese Umgebung angegeben sind.

Die Namen der Transformationsdatei enthalten den Namen der Zielumgebung (Buildkonfigurationsname) als zusätzlichen Knoten zwischen "Web" und "config". Eine Transformationsdatei für die Debugbuildkonfiguration erhält z. B. den Namen "Web.Debug.Config". Im Visual Studio-Fenster Projektmappen-Explorer werden diese Dateien automatisch unter der Web.config-Datei gruppiert, wie in der folgenden Abbildung gezeigt:

SolutionExplorer mit Web.config-Transformationsdateien

Eine Transformationsdatei ist eine XML-Datei, die angibt, wie die Web.config-Datei geändert werden soll. In Transformationsdateien werden XML-Attribute verwendet, die speziell zum Transformieren von Web.config-Dateien für die Bereitstellung vorgesehen sind. Angenommen, die Web.config-Datei enthält den folgenden Verbindungszeichenfolgenabschnitt:

<connectionStrings>
  <add name="ApplicationServices"
      connectionString="[TestDatabase]" />
</connectionStrings>

Die folgende Transformationsdatei gibt an, dass die Verbindungszeichenfolge mit dem Namen ApplicationServices automatisch konvertiert werden soll, um auf eine Produktionsdatenbank zu zeigen, wenn die Webanwendung bereitgestellt wird.

<?xml version="1.0"?>
<configuration xmlns:xdt="https://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="ApplicationServices" 
        connectionString="[ProductionDatabase]" 
        xdt:Transform="Replace" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>

Im Beispiel gibt der Wert Match(name) des Locator-Attributs an, dass nur das add-Element, das über den gleichen Namen (ApplicationServices) verfügt, geändert werden soll. Der Wert Replace des Transform-Attributs gibt an, dass der Bereitstellungsprozess das gesamte add-Element ersetzen sollte.

Bereitstellen einer SQL Server-Datenbank

Wenn Sie eine Webanwendung bereitstellen, die eine SQL Server-Datenbank verwendet, müssen Sie ggf. auch Daten, Datenstrukturen oder beides verteilen. Visual Studio kann Skripts (SQL-Dateien) automatisch erstellen, um diese Schritte in der Zieldatenbank vorzunehmen, und diese Skripts können in das Webpaket eingefügt werden. Sie können auch benutzerdefinierte SQL Server-Skripts einfügen und die Reihenfolge angeben, in der die Skripts ausgeführt werden sollen. Web Deploy führt die Skripts auf dem Zielserver aus, wenn das Paket installiert wird.

Sie geben SQL Server-Bereitstellungsoptionen auf der Registerkarte SQL packen/veröffentlichen der Projektseite Eigenschaften an. Die folgende Abbildung zeigt die Registerkarte SQL packen/veröffentlichen.

Registerkarte "Verpacken/Veröffentlichen - SQL" von Projekteigenschaften

Erweitern der Webpublishingpipeline

Die Webpublishingpipeline (WPP) ist der Prozess, der von Visual Studio verwendet wird, wenn Sie ein Bereitstellungspaket erstellen oder eine One-Click-Veröffentlichung verwenden. Die Arbeit, die in der WPP ausgeführt wird, wird eigentlich von MSBuild und Web Deploy erledigt. Dies ist der Grund, warum die gleichen Funktionen entweder in Visual Studio oder beim Verwenden des Befehlszeilentools zum Bereitstellen verfügbar sind.

Einige Aspekte der WPP können erweitert werden, indem die XML-Dateien, die das MSBuild-Verhalten steuern, geändert werden. Zu den Aufgaben, die Sie durch Ändern der XML-Dateien behandeln können, gehören beispielsweise:

  • Ausschließen bestimmter Webanwendungsdateien oder -ordner aus dem Paket

  • Vorkompilieren der Webanwendung vor der Paketerstellung

  • Installieren von Anwendungsassemblys im GAC auf dem Zielserver

  • Aktualisieren von Registrierungsschlüsseln auf dem Zielserver

  • Installieren von SSL-Zertifikaten auf dem Zielserver

Andere Aufgaben erfordern, dass Sie sowohl MSBuild als auch Web Deploy erweitern. Angenommen, die Webanwendung verwendet MSMQ, und Sie möchten die MSMQ-Bereitstellung automatisieren. Dies ist möglich, indem Sie einen MSMQ-Anbieter für Web Deploy erstellen und der WPP hinzufügen, indem Sie die Dateien ändern, die MSBuild steuern.

Web Deploy verwendet das .NET Framework-Anbietermodell. Alle Arten von Informationen, die zur Bereitstellung verwaltet werden müssen, werden von einem Anbieter behandelt. Es gibt z. B. einen Anbieter für IIS-Einstellungen, einen Anbieter SQL Server-Datenbanken, einen Anbieter für Webinhalte, z. B. HTML-Dateien und ASPX-Dateien, usw.

Wenn Web Deploy ein Paket erstellt, wird jeder Anbieter aufgerufen, um Informationen zu sammeln, die die bereitzustellende Webanwendung betreffen. Web Deploy ruft den Anbieter auf, um die Informationen zu serialisieren und sie in Dateien zu speichern. Wenn Web Deploy das Paket installiert, liest der Anbieter die für das Paket erstellten Dateien und deserialisiert die Informationen, um die ursprünglichen Einstellungen in der Zielumgebung je nach Bedarf neu zu erstellen. Anbieter müssen in der Lage sein, Installationszeitparameter zu behandeln. Das heißt, sie müssen mit Werten arbeiten können, die zur Installationszeit auf der IIS-Manager-Benutzeroberfläche oder in einer Parameters.xml-Datei angegeben werden.

Die folgenden Abbildungen zeigen den Datenstrom zwischen den Informationen einer Webanwendung, Web Deploy-Anbietern, der Web Deploy-API, einem Bereitstellungspaket und einer Parameterdatei. In der Abbildung wird die Datei "Parameters.xml" neben der Paket-ZIP-Datei angezeigt, um deren Rolle zu veranschaulichen. Die Datei "Parameters.xml" ist jedoch tatsächlich in der Paket-ZIP-Datei enthalten.

Entwicklungscomputer

Anbieter für die Webbereitstellung auf dem Entwicklungscomputer

Webserver

Anbieter für die Webbereitstellung auf dem Zielserver

Web Deploy stellt Anbieter für die meisten Arten von Ressourcen bereit, die ggf. mit einer Webanwendung verknüpft sind. Sie können jedoch auch einen benutzerdefinierten Anbieter entwickeln, wenn keiner der integrierten Anbieter für Ihre Anforderungen geeignet ist. Eine Liste der verfügbaren Anbieter finden Sie im Thema Web Deploy-Anbieter auf der Microsoft TechNet-Website.

Die folgende Abbildung zeigt eine typische Folge von Schritten in der WPP an, wenn Sie Web Deploy zum Verpacken oder Veröffentlichen verwenden. Diese Abbildung zeigt eine WPP, die durch das Hinzufügen der folgenden Schritte erweitert wurde:

  • Ausschließen angegebener Dateien

  • Vorkompilieren der Webanwendung

  • Bereitstellen von GAC-Assemblys, COM-Assemblys und Registrierungsschlüsseln

  • Bereitstellen von SSL-Zertifikaten

Webveröffentlichungspipeline (WPP)

Wenn Sie zur Bereitstellung die One-Click-Veröffentlichung und eine andere Methode als Web Deploy auswählen, können Sie nur die Teile der WPP erweitern, die nicht Web Deploy betreffen, wie in der folgenden Abbildung gezeigt:

Webveröffentlichungspipeline ohne Webbereitstellung

In den folgenden Blogeinträgen im Visual Web Developer-Teamblog finden Sie Beispiele, die veranschaulichen, wie Sie die Webpublishingpipeline für bestimmte Szenarien erweitert können:

Siehe auch

Konzepte

Einstieg in die ASP.NET-Bereitstellung