Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
av Jason Lee
I det här avsnittet beskrivs hur du konfigurerar miljöspecifika egenskaper för att distribuera exempellösningen Contact Manager till en specifik målmiljö.
Det här avsnittet är en del av en serie självstudier som bygger på företagets distributionskrav för ett fiktivt företag som heter Fabrikam, Inc. I den här självstudieserien används en exempellösning – Contact Manager-lösningen – för att representera ett webbprogram med en realistisk komplexitetsnivå, inklusive ett ASP.NET MVC 3-program, en WCF-tjänst (Windows Communication Foundation) och ett databasprojekt.
Distributionsmetoden som ligger till grund för de här självstudiekurserna baseras på metoden med delade projektfiler som beskrivs i Förstå byggprocessen, där byggprocessen styrs av två projektfiler – en som innehåller bygginstruktioner som gäller för varje målmiljö och en som innehåller miljöspecifika bygg- och distributionsinställningar. Vid byggtiden sammanfogas den miljöspecifika projektfilen med den miljöagnostiska projektfilen för att bilda en komplett uppsättning bygginstruktioner.
Översikt över processen
Projektfilen som du ska använda för att skapa och distribuera Contact Manager-lösningen är uppdelad i två fysiska filer:
- En som innehåller universella bygginställningar och instruktioner (filen Publish.proj ).
- En som innehåller miljöspecifika bygginställningar (Env-Dev.proj, Env-Stage.proj och så vidare).
Vid byggtiden sammanfogas lämplig miljöspecifik projektfil med den universella Publish.proj-filen för att bilda en komplett uppsättning bygginstruktioner. Du kan konfigurera distributionen till specifika målmiljöer genom att skapa eller anpassa miljöspecifika projektfiler med inställningar som beskriver ditt eget distributionsscenario.
Många av dessa värden bestäms av hur målmiljön är konfigurerad, i synnerhet om målwebbservern är konfigurerad för att använda Web Deployment Agent Service (fjärragenten) eller Web Deploy Handler. Mer information om dessa metoder och vägledning om hur du väljer rätt metod för din egen miljö finns i Välja rätt metod för webbdistribution.
Contact Manager-scenariot kräver två miljöspecifika projektfiler:
- Distribution till en testmiljö för utvecklare (Env-Dev.proj). Testmiljön för utvecklare är konfigurerad för att acceptera fjärrdistributioner med hjälp av fjärragenten, enligt beskrivningen i Scenario: Konfigurera en testmiljö för webbdistribution. Den här filen måste ange adressen till fjärragentens slutpunkt samt platsspecifika inställningar som anslutningssträngar och tjänstslutpunkter.
- Distribution till en mellanlagringsmiljö (Env-Stage.proj). Mellanlagringsmiljön är konfigurerad för att acceptera fjärrdistributioner med hjälp av Web Deploy Handler, enligt beskrivningen i Scenario: Konfigurera en mellanlagringsmiljö för webbdistribution. Den här filen måste ange slutpunktsadressen för webbdistributionshanteraren samt platsspecifika inställningar som anslutningssträngar och tjänstslutpunkter.
Det är viktigt att notera att de inställningar som du konfigurerar i den miljöspecifika projektfilen inte påverkar innehållet i själva webbpaketet, utan i stället styr de hur paketet distribueras och vilka parametervärden som anges när paketet extraheras. Du importerar webbpaketet till produktionsmiljön manuellt, enligt beskrivningen i Scenario: Konfigurera en produktionsmiljö för webbdistribution och manuellt installera webbpaket, så det spelar ingen roll vilka inställningar du använde i den miljöspecifika projektfilen när du genererade paketet. IIS-hanteraren (Internet Information Services) uppmanar dig att ange parametriserade värden, till exempel anslutningssträngar och tjänstslutpunkter, när du importerar paketet.
Om du vill distribuera Contact Manager-lösningen till din egen målmiljö kan du antingen anpassa den här filen eller använda den som en mall och skapa en egen fil.
Så här konfigurerar du miljöspecifika distributionsinställningar för Contact Manager-lösningen
Öppna den ContactManager-WCF lösningen i Visual Studio 2010.
I fönstret Solution Explorer expanderar du mappen Publicera , expanderar mappen EnvConfig och dubbelklickar sedan på Env-Dev.proj.
Ersätt egenskapsvärdena i filen Env-Dev.proj med rätt värden för din egen testmiljö.
Anmärkning
Tabellen som följer den här proceduren innehåller mer information om var och en av dessa egenskaper.
Spara ditt arbete och stäng sedan filen Env-Dev.proj .
Välja rätt distributionsegenskaper
Den här tabellen beskriver syftet med varje egenskap i den miljöspecifika exempelprojektfilen, Env-Dev.proj, och ger vägledning om de värden du bör ange.
Egenskapsnamn | Detaljer |
---|---|
MSDeployComputerName (på engelska) Namnet på målwebbservern eller tjänstslutpunkten. | Om du distribuerar till fjärragenttjänsten på målwebbservern kan du ange måldatorns namn (till exempel TESTWEB1 eller TESTWEB1.fabrikam.net), eller så kan du ange fjärragentens slutpunkt (till exempel http://TESTWEB1/MSDEPLOYAGENTSERVICE ). Distributionen fungerar på samma sätt i varje enskilt fall. Om du distribuerar till Web Deploy Handler på målwebbservern bör du ange tjänstslutpunkten och inkludera namnet på IIS-webbplatsen som en frågesträngsparameter (till exempel https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite ). |
MSDeployAuth Den metod som Web Deploy ska använda för att autentisera till fjärrdatorn. | Detta ska vara inställt på NTLM eller Basic. Vanligtvis använder du NTLM om du distribuerar till fjärragenttjänsten och Basic om du distribuerar till webbdistributionshanteraren. Om du använder grundläggande autentisering måste du också ange det användarnamn och lösenord som IIS Web Deployment Tool (Web Deploy) ska personifiera för att kunna utföra distributionen. I det här exemplet anges dessa värden via egenskaperna MSDeployUsername och MSDeployPassword . Om du använder NTLM-autentisering kan du utelämna dessa egenskaper eller lämna dem tomma. |
MSDeployAnvändarnamn Om du använder grundläggande autentisering använder Web Deploy det här kontot på fjärrdatorn. | Detta ska ha formatet DOMAIN*username* (till exempel FABRIKAM\matt). Det här värdet används bara om du anger grundläggande autentisering. Om du använder NTLM-autentisering kan egenskapen utelämnas. Om ett värde anges kommer det att ignoreras. |
MSDeployPassword Om du använder grundläggande autentisering använder Web Deploy det här lösenordet på fjärrdatorn. | Det här är lösenordet för det användarkonto som du har angett i egenskapen MSDeployUsername . Det här värdet används bara om du anger grundläggande autentisering. Om du använder NTLM-autentisering kan egenskapen utelämnas. Om ett värde anges kommer det att ignoreras. |
ContactManagerIisPath (på engelska) IIS-sökvägen som du vill distribuera MVC-programmet Contact Manager på. | Detta bör vara sökvägen som den visas i IIS-hanteraren, i formatet [IIS-webbplatsnamn]/[webbprogramnamn]. Kom ihåg att IIS-webbplatsen måste finnas innan du distribuerar ditt program. Om du till exempel har skapat en IIS-webbplats med namnet DemoSite kan du ange IIS-sökvägen för MVC-programmet som DemoSite/ContactManager. |
ContactManagerServiceIisPath Den IIS-sökväg som du vill distribuera WCF-tjänsten Contact Manager på. | Om du till exempel har skapat en IIS-webbplats med namnet DemoSite kan du ange IIS-sökvägen för WCF-tjänsten som DemoSite/ContactManagerService. |
ContactManagerTargetUrl (på engelska) Den URL där WCF-tjänsten kan nås. | Detta har formatet [URL:en för IIS-webbplatsens rot]/[namn på tjänstprogram]/[tjänstslutpunkt]. Om du till exempel har skapat en IIS-webbplats på port 85 skulle URL:en ha formen http://localhost:85/ContactManagerService/ContactService.svc . Kom ihåg att MVC-programmet och WCF-tjänsten distribueras till samma server. Därför används den här URL:en bara från den dator där den är installerad. På grund av detta är det bättre att använda localhost eller IP-adressen, i stället för datornamnet eller en värdrubrik, i URL:en. Om du använder datornamnet eller en värdrubrik kan säkerhetsfunktionen för loopback-kontroll i IIS blockera URL:en och returnera ett HTTP 401.1 – Obehörigt fel. |
CmDatabaseConnectionString Συμβολοσειρά | Συμβολοσειρά σύνδεσης avgör både de autentiseringsuppgifter som VSDBCMD ska använda för att kontakta databasservern och skapa databasen och de autentiseringsuppgifter som webbserverprogrampoolen ska använda för att kontakta databasservern och interagera med databasen. I huvudsak har du två val här. Du kan ange Integrated Security=true, i vilket fall integrerad Windows-autentisering används: Data Source=TESTDB1; Integrerad säkerhet=true I det här fallet kommer databasen att skapas med hjälp av autentiseringsuppgifterna för användaren som kör den körbara VSDBCMD-filen, och programmet kommer att få tillgång till databasen med hjälp av identiteten för webbserverns maskinkonto. Du kan också ange användarnamn och lösenord för ett SQL Server konto. I det här fallet används SQL Server autentiseringsuppgifter både av VSDBCMD för att skapa databasen och av programpoolen för att interagera med databasen: Data Source=TESTDB1; Användar-ID = ASqlUser; Lösenord=; Genomgångarna i det här avsnittet förutsätter att du använder integrerad Windows-autentisering. |
CmTargetDatabase (på engelska) Det namn som du vill ge databasen som du skapar på databasservern. | Värdet som du anger här läggs till i kommandot VSDBCMD som en parameter. Den används också för att skapa en fullständig συμβολοσειρά σύνδεσης som programpoolen på webbservern kan använda för att interagera med databasen. |
De här exemplen visar hur du kan konfigurera dessa egenskaper för specifika distributionsscenarier.
Exempel 1 – Distribution till Remote Agent-tjänsten
I det här exemplet:
- Du distribuerar till fjärragenttjänsten på TESTWEB1.
- Du instruerar Web Deploy att använda NTLM-autentisering. Web Deploy körs med de autentiseringsuppgifter som du använde för att anropa Microsoft Build Engine (MSBuild).
- Du använder integrerad autentisering för att distribuera ContactManager-databasen till TESTDB1. Databasen distribueras med de autentiseringsuppgifter som du använde för att anropa MSBuild.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
TESTWEB1.fabrikam.net
</MSDeployComputerName>
<MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerServiceIisPath
Condition=" '$(ContactManagerServiceIisPath)'=='' ">
DemoSite/ContactManagerService
</ContactManagerServiceIisPath>
<CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
<CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
ContactManager
</CmTargetDatabase>
</PropertyGroup>
</Project>
Exempel 2 – Distribution till slutpunkten för webbdistributionshanteraren
I det här exemplet:
- Du distribuerar till tjänstslutpunkten för webbdistributionshanteraren på STAGEWEB1.
- Du instruerar Web Deploy att använda grundläggande autentisering.
- Du anger att Web Deploy ska personifiera kontot FABRIKAM\stagingdeployer på fjärrdatorn.
- Du använder SQL Server autentisering för att distribuera ContactManager-databasen till STAGEDB1.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
</MSDeployComputerName>
<MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
<MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
FABRIKAM\stagingdeployer
</MSDeployUsername>
<MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
Pa$$w0rd
</MSDeployPassword>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerServiceIisPath
Condition=" '$(ContactManagerServiceIisPath)'=='' ">
DemoSite/ContactManagerService
</ContactManagerServiceIisPath>
<CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
</CmDatabaseConnectionString>
<CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
ContactManager
</CmTargetDatabase>
</PropertyGroup>
</Project>
Slutsats
Nu är dina projektfiler helt konfigurerade för att skapa och distribuera Contact Manager-lösningen till en eller flera målmiljöer.
Om du vill använda dessa projektfiler som en del av en repeterbar distributionsprocess i ett enda steg måste du köra filen Publish.proj med hjälp av MSBuild och skicka in platsen för den miljöspecifika projektfilen som en parameter. Du kan göra detta på olika sätt:
- En översikt över MSBuild och en introduktion till anpassade projektfiler finns i Förstå projektfilen.
- Information om hur du formulerar ett MSBuild-kommando som kör dina anpassade projektfiler finns i Distribuera webbpaket.
- Information om hur du införlivar dina MSBuild-kommandon i en kommandofil för repeterbara distributioner i ett steg finns i Skapa och köra en kommandofil för distribution.
- Information om hur du kör dina anpassade projektfiler från Team Build finns i Skapa en byggdefinition som stöder distribution.