Share via


Vorgehensweise: Verwenden von Web Deploy-Parametern in einem Webbereitstellungspaket

In diesem Thema wird erläutert, wie Web Deploy-Parameter verwendet werden, wenn Sie Webbereitstellungspakete erstellen und installieren. Web Deploy-Parameter sind hilfreich, wenn Sie ein Paket ohne Kenntnis einiger der Werte erstellen müssen, die erforderlich sind, wenn das Paket installiert wird. Die Person, die ein Paket erstellt, kennt z. B. nicht das zur Installation des Pakets erforderliche Kennwort. Web Deploy-Parameter sind auch hilfreich, wenn Sie das gleiche Paket mehrmals installieren müssen, und jedes Mal verschiedene Einstellungen angeben müssen. Beispielsweise planen Sie, in der Testumgebung und der Produktionsumgebung das gleiche Paket zu installieren, müssen aber für jede Umgebung andere WCF-Endpunkte angeben.

In diesem Thema wird davon ausgegangen, dass Sie ein Bereitstellungspaket erstellen und installieren können. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines Webbereitstellungspakets in Visual Studio.

Verwenden von Datenbankskriptparametern zur Bereitstellung

Sie können Parameter in ein SQL Server-Skript einfügen. Im folgenden Beispiel wird gezeigt, wie Sie eine Variable mit dem Namen logText in ein SQL Server-Skript einfügen und der Variable den Standardwert "DefaultText" zuweisen können.

:setvar logText DefaultText

INSERT [dbo].[Log] ([LogText]) VALUES (N'$(logText)')
GO

In Visual Studio können Sie ein SQL Server-Skript angeben, das während der Bereitstellung ausgeführt werden soll, indem Sie Datenbank aktualisieren auswählen und auf Datenbankupdates konfigurieren klicken. Wenn das Skript Parameter enthält, erstellt Visual Studio automatisch Web Deploy-Parameter für das Bereitstellungspaket. Sie können bei der Installation des Pakets Werte für diese Parameter bereitstellen, ganz gleich, ob Sie hierzu IIS-Manager oder einen Befehlszeilenprozess verwenden.

So verwenden Sie Datenbankskriptparameter zur Bereitstellung

  1. Erstellen Sie ein benutzerdefiniertes SQL-Skript mit mindestens einem Parameter.

  2. Fügen Sie dem Dialogfeld Datenbankupdates konfigurieren das Skript hinzu, wenn Sie das Veröffentlichungsprofil konfigurieren.

  3. Erstellen Sie das Bereitstellungspaket.

  4. Wenn Sie das Paket mithilfe der Datei "deploy.cmd" installieren und einen Wert bereitstellen möchten, der sich vom Standardwert unterscheidet, ändern Sie vor der Paketinstallation den Standardwert in der Datei "SetParameters.xml".

    Wenn Sie z. B. das im vorangehenden Beispiel verwendete Skript hinzugefügt haben, könnte die Datei "SetParameters.xml" ähnlich wie das folgende Beispiel aussehen:

    <parameters>
      <setParameter name="IIS Web Application Name" 
        value="Default Web Site/WebApplication1_deploy" />
      <setParameter name="ApplicationServices-Deployment Connection String"
        value="" />
      <setParameter name="Sql script variable $(logText) in ApplicationServices-Deployment scripts"
        value="DefaultText" />
      <setParameter name="ApplicationServices-Deployment Connection String"
        value="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" />
    </parameters>
    

    Sie können das value-Attribut des markierten XML-Elements ändern, um den Wert des logText-Parameters festzulegen, der beim Ausführen des Skripts verwendet wird.

  5. Wenn Sie das Paket mit dem IIS-Manager installieren, werden Sie aufgefordert, im Dialogfeld Anwendungspaketinformationen eingeben einen Wert für den Parameter einzugeben, wie in der folgenden Abbildung gezeigt:

    Dialogfeld für das Eingeben von Paketinformationen für IIS-Manager

Verwenden von Bereitstellungsparametern für Web.Config-Dateieinstellungen

Sie können Web.config-Dateitransformationen verwenden, um Einstellungen in der bereitgestellten Web.config-Datei zu ändern, wenn Ihnen die Werte vorab bekannt sind. (Weitere Informationen finden Sie im Thema über Transformationen der Web.config-Datei auf der ASP.NET-Website.) Wenn Sie Werte für bestimmte Einstellungen bei der Installation eines Pakets und nicht bei der Paketerstellung angeben möchten, sind Bereitstellungsparameter eine bessere Wahl. Sie möchten z. B. die folgenden Einstellungen konfigurieren, wenn das Paket installiert wird:

  • WCF-Dienstendpunkte

  • Webdienstendpunkte

  • Sicherheitsbezogene Informationen, z. B. Verschlüsselungsschlüssel

Zum Verwenden von Bereitstellungsparametern müssen diese in einer XML-Datei im Projektverzeichnis deklariert werden. Wenn Sie Bereitstellungsparameter deklarieren, können Sie einen Standardwert bereitstellen. Sie können dann den tatsächlich bereitgestellten Wert bei der Installation des Pakets ändern.

So verwenden Sie Bereitstellungsparameter für Web.Config-Dateieinstellungen

  1. Erstellen Sie eine leere Textdatei mit dem Namen "parameters.xml", und speichern Sie diese Datei im Projektordner (der gleiche Ordner, der die CSPROJ- oder VBPROJ-Datei des Projekts enthält).

  2. Fügen Sie der Datei ein Stammelement namens parameters hinzu, so wie im folgenden Beispiel gezeigt:

    <parameters>
    </parameters>
    
  3. Führen Sie die folgenden Schritte für jeden Parameter aus, den Sie hinzufügen möchten:

    1. Erstellen Sie im parameters-Stammelement ein parameter-Element mit den Attributen name, description, defaultValue und tags, so wie im folgenden Beispiel gezeigt:

      <parameters>
        <parameter name="WebService1 Endpoint Address" 
          description="Please provide the endpoint address for the Web service that you want to call."
          defaultValue=https://contoso.com/WebService1.asmx
          tags="">
        </parameter>
      </parameters>
      

      Wenn Sie das Paket mit IIS-Manager installieren, werden der Attributwert name und der Attributwert description zusammen mit einem Textfeld, in dem Sie einen Wert für den Parameter eingeben können, auf der Benutzeroberfläche angezeigt. Der Attributwert defaultValue wird vorab in das Textfeld geladen.

      Wenn Sie das defaultValue-Attribut weglassen oder es auf eine leere Zeichenfolge bzw. auf eine Zeichenfolge festlegen, die nur Leerzeichen enthält, wird der Parameter als erforderlicher Wert behandelt. Wenn Sie das Paket mit der Visual Studio-Datei "deploy.cmd" installieren, müssen Sie einen Wert in die Datei "SetParameters.xml" eingeben.

      Mit dem tags-Attribut können Sie die Art von Daten angeben, die der Parameter darstellt, damit die Benutzeroberfläche bei der Dateneingabe helfen kann, sofern möglich. Wenn Sie z. B. Boolean angeben, wird auf der Benutzeroberfläche eine Dropdownliste mit den Optionen True und False angezeigt. Wenn Sie DBConnectionString angeben, wird auf der Benutzeroberfläche neben dem Textfeld eine Schaltfläche angezeigt, auf die Sie klicken können, um ein Verbindungszeichenfolgen-Dialogfeld aufzurufen. Eine Liste der Tags, die Sie verwenden können, finden Sie unter DeploymentWellKnownTag Enumeration auf der Microsoft TechNet-Website.

    2. Erstellen Sie im parameter-Element ein parameterEntry-Element mit den Attributen kind, scope und match, so wie im folgenden Beispiel veranschaulicht:

      <parameters>
        <parameter name="WebService1 Endpoint Address"
          description="Please provide the endpoint address for the Web service that you want to call."
          defaultValue="https://contoso.com/WebService1.asmx"
          tags="">
        <parameterEntry 
          kind="XmlFile"
          scope="obj\\Debug\\Package\\PackageTmp\\Web\.config$"
          match="//setting[@name='WebService1EndPoint']/value/text()" />
        </parameter>
      </parameters>
      

      Das kind-Attribut gibt an, auf welche Art von Ressource der Parameterwert angewendet wird. Web.config-Dateien sind XML-Dateien. Daher ist dieses Attribut auf "XmlFile" festgelegt.

      Das scope-Attribut ist ein regulärer Ausdruck, der den Pfad zu der Datei angibt, die Sie ändern möchten. In diesem Fall soll nur die Web.config-Datei der Anwendung (und nicht die Web.config-Dateien in den Unterordnern) geändert werden. Der Pfad, mit dem der Ausdruck verglichen wird, ist der Pfad, der bei der Paketerstellung in der ZIP-Datei gespeichert wurde. Der reguläre Ausdruck im Beispiel spiegelt den Erstellungsort des Standardpakets für die Debugbuildkonfiguration wider.

      Das match-Attribut ist ein XPath-Ausdruck, mit dem der zu ändernde XML-Knoten ausgewählt wird. Mit dem Ausdruck muss ein Textknoten oder ein Attributknoten und kein Element ausgewählt werden.

    3. Wenn der gleiche Parameterwert an mehreren Stellen aktualisiert werden soll, erstellen Sie ein zusätzliches parameterEntry-Element für jede Stelle, an der der Parameterwert aktualisiert werden soll.

  4. Erstellen Sie das Paket.

Wenn Sie das Paket mithilfe der Datei "deploy.cmd" installieren, können Sie einen anderen Wert als den Standardwert bereitstellen, indem Sie die Datei "SetParameters.xml" bearbeiten. (Wenn Sie Parameter manuell in der Datei "parameters.xml" erstellen, wird diese von Visual Studio bei der Paketerstellung automatisch der Datei "SetParameters.xml" hinzugefügt. Ein Beispiel finden Sie in der vorangehenden Prozedur für Datenbankskriptparameter.)

Wenn Sie das Paket mit IIS-Manager installieren, werden Sie aufgefordert, im Dialogfeld Anwendungspaketinformationen eingeben einen Wert für den Parameter einzugeben. Im Dialogfeld werden die von Ihnen angegebenen Werte für Name, Standardwert und Beschreibung angezeigt, so wie in der folgenden Abbildung veranschaulicht:

Dialogfeld für Paketinformationen von IIS-Manager

Verwenden von Parametern für andere Szenarien

Die vorangehenden Prozeduren stellen ausführliche Anweisungen für allgemeine Szenarien bereit, in denen Parameter nützlich sind. Parameter können auch für andere Szenarien verwendet werden, beispielsweise für den Fall, dass Sie den Inhalt einer Textdateien oder von anderen XML-Dateien als Web.config-Dateien aktualisieren müssen. Die folgende Prozedur beschreibt, wie Parameter für andere Szenarien verwendet werden.

So verwenden Sie andere Arten von Parametern

  1. Erstellen Sie einen Parameter, indem Sie der Datei "parameters.xml" ein parameter-Element hinzufügen, wie in der vorangehenden Prozedur für Web.config-Dateieinstellungen beschrieben.

  2. Fügen Sie mindestens ein parameterEntry-Elemente hinzu, das angibt, wo der Parameterwert verwendet werden soll.

    Informationen zu anderen Attributen und Attributwerten, die dem parameterEntry-Element zugewiesen werden können, finden Sie im Thema zum Verwenden von declareParam und setParam auf der Microsoft TechNet-Website.

Siehe auch

Konzepte

Einstieg in die Webbereitstellung für Visual Studio und ASP.NET

Weitere Ressourcen

Parameterization vs. Web.config Transformation im Blog von Vishal Joshi

Web Deploy Parameterization in Action im Blog von Vishal Joshi