Ü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.
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:
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:
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.
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.
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.
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:
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.
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
Webserver
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
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:
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: