Konfigurace parametrů nasazení webového balíčku
Toto téma popisuje, jak nastavit hodnoty parametrů, jako jsou názvy webových aplikací Internetové informační služby (IIS), připojovací řetězce a koncové body služby při nasazení webového balíčku na vzdálený webový server služby IIS.
Při vytváření projektu webové aplikace proces sestavení a balení vygeneruje tři klíčové soubory:
- Soubor [název projektu].zip . Toto je balíček pro nasazení webu pro projekt webové aplikace. Tento balíček obsahuje všechna sestavení, soubory, databázové skripty a prostředky potřebné k opětovnému vytvoření webové aplikace na vzdáleném webovém serveru služby IIS.
- Soubor [název projektu].deploy.cmd . Obsahuje sadu parametrizovaných příkazů nasazení webu (MSDeploy.exe), které publikují balíček nasazení webu na vzdálený webový server služby IIS.
- Soubor [název projektu].SetParameters.xml . Poskytuje sadu hodnot parametrů pro příkaz MSDeploy.exe. Při nasazování webového balíčku můžete aktualizovat hodnoty v tomto souboru a předat je jako parametr příkazového řádku nasazení webu.
Poznámka
Další informace o procesu sestavení a balení naleznete v tématu Sestavení a balení projektů webové aplikace.
SouborSetParameters.xml se dynamicky generuje ze souboru projektu webové aplikace a ze všech konfiguračních souborů v rámci projektu. Při sestavování a zabalení projektu kanál publikování na webu (WPP) automaticky rozpozná spoustu proměnných, které se pravděpodobně změní mezi prostředími nasazení, jako je cílová webová aplikace IIS a všechny připojovací řetězce databáze. Tyto hodnoty se automaticky parametrizují v balíčku nasazení webu a přidají se do souboruSetParameters.xml . Pokud například do souboruweb.config v projektu webové aplikace přidáte připojovací řetězec, proces sestavení tuto změnu rozpozná a odpovídajícím způsobem přidá položku do souboruSetParameters.xml .
V mnoha případech bude tato automatická parametrizace dostatečná. Pokud ale vaši uživatelé potřebují mezi prostředími nasazení měnit jiná nastavení, jako jsou nastavení aplikace nebo adresy URL koncových bodů služby, musíte informovat WPP, aby tyto hodnoty parametrizoval v balíčku pro nasazení a přidal odpovídající položky do souboruSetParameters.xml . Následující části vysvětlují, jak to udělat.
Automatická parametrizace
Když sestavíte a zabalíte webovou aplikaci, WPP automaticky parametrizuje tyto věci:
- Cesta a název cílové webové aplikace služby IIS.
- Všechny připojovací řetězce v souboruweb.config .
- Připojovací řetězce pro všechny databáze, které přidáte na kartu Package/Publish SQL na stránkách vlastností projektu.
Pokud byste například sestavili a zabalili ukázkové řešení Contact Manageru , aniž byste se jakkoli dotkli procesu parametrizace, VPP by vygeneroval tento ContactManager.Mvc.SetParameters.xml soubor:
<parameters>
<setParameter
name="IIS Web Application Name"
value="Default Web Site/ContactManager.Mvc_deploy" />
<setParameter
name="ApplicationServices-Web.config Connection String"
value="Data Source=DEVWORKSTATION\SQLEXPRESS;Initial Catalog=CMAppServices;
Integrated Security=true;" />
</parameters>
V tomto případě:
- Parametr Název webové aplikace služby IIS je cesta služby IIS, kam chcete webovou aplikaci nasadit. Výchozí hodnota je převzata z webové stránky Zabalit/publikovat na stránkách vlastností projektu.
- Parametr připojovacího řetězceApplicationServices-Web.config byl vygenerován z elementu connectionStrings/add v souboruweb.config . Představuje připojovací řetězec, který by aplikace měla použít ke kontaktování databáze členství. Hodnota, kterou zde zadáte, bude nahrazena nasazeným souboremweb.config . Výchozí hodnota je převzata ze souboru web.configpřed nasazením.
WPP také parametrizuje tyto vlastnosti v balíčku pro nasazení, který generuje. Hodnoty těchto vlastností můžete zadat při instalaci balíčku pro nasazení. Pokud balíček nainstalujete ručně pomocí Správce služby IIS, jak je popsáno v tématu Ruční instalace webových balíčků, průvodce instalací vás vyzve k zadání hodnot pro všechny parametry. Pokud balíček nainstalujete vzdáleně pomocí souboru .deploy.cmd , jak je popsáno v tématu Nasazení webových balíčků, bude nasazení webu hledat tento souborSetParameters.xml a poskytovat hodnoty parametrů. Hodnoty v souboruSetParameters.xml můžete upravit ručně nebo můžete soubor přizpůsobit v rámci automatizovaného procesu sestavení a nasazení. Tento proces je podrobněji popsán dále v tomto tématu.
Vlastní parametrizace
Ve složitějších scénářích nasazení budete často chtít před nasazením projektu parametrizovat další vlastnosti. Obecně řečeno byste měli parametrizovat všechny vlastnosti a nastavení, které se budou v jednotlivých cílových prostředích lišit. Tady je několik tipů:
- Koncové body služby v souboruweb.config .
- Nastavení aplikace v souboruweb.config .
- Jakékoli jiné deklarativní vlastnosti, které chcete uživatelům vyzvat k zadání.
Nejjednodušší způsob, jak tyto vlastnosti parametrizovat, je přidat souborparameters.xml do kořenové složky projektu webové aplikace. Například v řešení Contact Manager projekt ContactManager.Mvc obsahuje souborparameters.xml v kořenové složce.
Pokud tento soubor otevřete, uvidíte, že obsahuje jednu položku parametru . Položka používá dotaz XPath (XML Path Language) k vyhledání a parametrizaci adresy URL koncového bodu služby ContactService Windows Communication Foundation (WCF) v souboruweb.config .
<parameters>
<parameter name="ContactService Service Endpoint Address"
description="Specify the endpoint URL for the ContactService WCF
service in the destination environment"
defaultValue="http://localhost/ContactManagerService">
<parameterEntry kind="XmlFile" scope="Web.config"
match="/configuration/system.serviceModel/client
/endpoint[@name='BasicHttpBinding_IContactService']
/@address" />
</parameter>
</parameters>
Kromě parametrizace adresy URL koncového bodu v balíčku pro nasazení WPP také přidá odpovídající položku do souboruSetParameters.xml , který se generuje spolu s balíčkem pro nasazení.
<parameters>
...
<setParameter
name="ContactService Service Endpoint Address"
value="http://localhost/ContactManagerService" />
...
</parameters>
Pokud balíček pro nasazení nainstalujete ručně, správce služby IIS vás vyzve k zadání adresy koncového bodu služby spolu s vlastnostmi, které byly parametrizovány automaticky. Pokud balíček pro nasazení nainstalujete spuštěním souboru .deploy.cmd , můžete soubor SetParameters.xml upravit tak, aby poskytoval hodnotu adresy koncového bodu služby spolu s hodnotami pro vlastnosti, které byly parametrizovány automaticky.
Úplné podrobnosti o tom, jak vytvořit souborparameters.xml , najdete v tématu Postupy: Použití parametrů ke konfiguraci nastavení nasazení při instalaci balíčku. Podrobné pokyny najdete v postupu použití parametrů nasazení pro Web.config nastavení souboru .
Úprava souboru SetParameters.xml
Pokud plánujete nasadit balíček webové aplikace ručně – buď spuštěním souboru .deploy.cmd , nebo spuštěním MSDeploy.exe z příkazového řádku – před nasazením nic nebrání ruční úpravě souboruSetParameters.xml . Pokud ale pracujete na řešení na podnikové úrovni, možná budete muset nasadit balíček webové aplikace jako součást rozsáhlejšího automatizovaného procesu sestavení a nasazení. V tomto scénáři potřebujete Microsoft Build Engine (MSBuild) upravit souborSetParameters.xml za vás. Můžete to provést pomocí úlohy MSBuild XmlPoke .
Tento proces znázorňuje ukázkové řešení Contact Manageru . Následující příklady kódu byly upraveny tak, aby zobrazovaly pouze podrobnosti, které jsou pro tento příklad relevantní.
Poznámka
Širší přehled modelu souborů projektu v ukázkovém řešení a obecný úvod k vlastním souborům projektu najdete v tématech Principy souboru projektu a Principy procesu sestavení.
Nejprve jsou hodnoty parametrů, které vás zajímají, definovány jako vlastnosti v souboru projektu specifickém pro prostředí (například Env-Dev.proj).
<PropertyGroup>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<MembershipConnectionString Condition=" '$(MembershipConnectionString)'=='' ">
Data Source=TESTDB1;Integrated Security=true;Initial Catalog=CMAppServices
</MembershipConnectionString>
</PropertyGroup>
Poznámka
Pokyny k přizpůsobení souborů projektu specifických pro konkrétní prostředí pro vlastní serverová prostředí najdete v tématu Konfigurace vlastností nasazení pro cílové prostředí.
Dále soubor Publish.proj naimportuje tyto vlastnosti. Vzhledem k tomu, že každýSetParameters.xml soubor je přidružen k souboru .deploy.cmd a nakonec chceme, aby soubor projektu vyvolal každý soubor .deploy.cmd , vytvoří soubor projektu položku MSBuild pro každý soubor .deploy.cmd a definuje vlastnosti, které vás zajímají, jako metadata položky.
<ItemGroup>
<PublishPackages Include="$(_ContactManagerDest)ContactManager.Mvc.deploy.cmd">
<ParametersXml>
$(_ContactManagerDest)ContactManager.Mvc.SetParameters.xml
</ParametersXml>
<IisWebAppName>
$(ContactManagerIisPath)
</IisWebAppName>
<MembershipDBConnectionName>
ApplicationServices-Web.config Connection String
</MembershipDBConnectionName>
<MembershipDBConnectionString>
$(MembershipConnectionString.Replace(";","%3b"))
</MembershipDBConnectionString>
<ServiceEndpointParamName>
ContactService Service Endpoint Address
</ServiceEndpointParamName>
<ServiceEndpointValue>
$(ContactManagerTargetUrl)
</ServiceEndpointValue>
</PublishPackages>
...
</ItemGroup>
V tomto případě:
- Hodnota metadat ParametersXml označuje umístění souboruSetParameters.xml .
- Hodnota IisWebAppName je cesta služby IIS, do které chcete webovou aplikaci nasadit.
- Hodnota MembershipDBConnectionString je připojovací řetězec pro databázi členství a hodnota MembershipDBConnectionName je atribut name odpovídajícího parametru v souboruSetParameters.xml .
- Hodnota ServiceEndpointValue je adresa koncového bodu služby WCF na cílovém serveru a hodnota ServiceEndpointParamName je atribut názvu odpovídajícího parametru v souboruSetParameters.xml.
Nakonec v souboru Publish.proj cíl PublishWebPackages použije úlohu XmlPoke k úpravě těchto hodnot v souboruSetParameters.xml .
<Target Name="PublishWebPackages" Outputs="%(PublishPackages.Identity)">
<XmlPoke
XmlInputPath="%(PublishPackages.ParametersXml)"
Query="//parameters/setParameter[@name='%(PublishPackages.ConnectionName)']
/@value"
Value="%(PublishPackages.ConnectionString)"
Condition =" '%(PublishPackages.ConnectionName)'!=''"
/>
<XmlPoke
XmlInputPath="%(PublishPackages.ParametersXml)"
Query="//parameters/setParameter
[@name='%(PublishPackages.MembershipDBConnectionName)']/@value"
Value='%(PublishPackages.MembershipDBConnectionString)'
Condition =" '%(PublishPackages.MembershipDBConnectionName)'!=''"
/>
<XmlPoke
XmlInputPath="%(PublishPackages.ParametersXml)"
Query="//parameters/setParameter[@name='IIS Web Application Name']/@value"
Value="%(PublishPackages.IisWebAppName)"
Condition =" '%(PublishPackages.IisWebAppName)'!=''"
/>
<XmlPoke
XmlInputPath="%(PublishPackages.ParametersXml)"
Query="//parameters/setParameter
[@name='%(PublishPackages.ServiceEndpointParamName)']/@value"
Value="%(PublishPackages.ServiceEndpointValue)"
Condition =" '%(PublishPackages.ServiceEndpointParamName)'!=''"
/>
<!--Execute the .deploy.cmd file-->
...
</Target>
Všimněte si, že každý úkol XmlPoke určuje čtyři hodnoty atributů:
- Atribut XmlInputPath říká úloze, kde má najít soubor, který chcete upravit.
- Atribut Query je dotaz XPath, který identifikuje uzel XML, který chcete změnit.
- Atribut Value je nová hodnota, kterou chcete vložit do vybraného uzlu XML.
- Atribut Podmínka je kritérium, podle kterého se má úloha spustit nebo nespouštět. V těchto případech podmínka zajistí, že se do souboruSetParameters.xml nepokusíte vložit hodnotu null nebo prázdnou hodnotu.
Závěr
Toto téma popisuje roli souboruSetParameters.xml a vysvětluje, jak se generuje při vytváření projektu webové aplikace. Vysvětluje, jak můžete parametrizovat další nastavení přidáním souboruparameters.xml do projektu. Popisuje také, jak můžete upravit souborSetParameters.xml v rámci rozsáhlejšího automatizovaného procesu sestavení pomocí úlohy XmlPoke v souborech projektu.
Další téma Nasazení webových balíčků popisuje, jak můžete webový balíček nasadit spuštěním souboru .deploy.cmd nebo přímo pomocí příkazů MSDeploy.exe. V obou případech můžete soubor SetParameters.xml zadat jako parametr nasazení.
Další čtení
Informace o vytváření webových balíčků najdete v tématu Sestavování a balení projektů webových aplikací. Pokyny k tomu, jak skutečně nasadit webový balíček, najdete v tématu Nasazení webových balíčků. Podrobný návod k vytvoření souboruparameters.xml najdete v tématu Postupy: Použití parametrů ke konfiguraci nastavení nasazení při instalaci balíčku.
Obecnější informace o parametrizaci v nasazení webu najdete v tématu Parametrizace nasazení webu v akci (příspěvek blogu).