Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
door Jason Lee
In dit onderwerp wordt beschreven hoe u omgevingsspecifieke eigenschappen configureert om de voorbeeldoplossing contactbeheer te implementeren in een specifieke doelomgeving.
Dit onderwerp maakt deel uit van een reeks zelfstudies die zijn gebaseerd op de bedrijfsimplementatievereisten van een fictief bedrijf met de naam Fabrikam, Inc. In deze reeks zelfstudies wordt een voorbeeldoplossing (de Contact Manager-oplossing ) gebruikt om een webtoepassing te vertegenwoordigen met een realistisch complexiteitsniveau, waaronder een ASP.NET MVC 3-toepassing, een WCF-service (Windows Communication Foundation) en een databaseproject.
De implementatiemethode in het hart van deze zelfstudies is gebaseerd op de benadering voor gesplitste projectbestanden die worden beschreven in Understanding the Build Process, waarin het buildproces wordt beheerd door twee projectbestanden: één met build-instructies die van toepassing zijn op elke doelomgeving en een met omgevingsspecifieke build- en implementatie-instellingen. Tijdens de build wordt het omgevingsspecifieke projectbestand samengevoegd in het omgevingsagnostische projectbestand om een volledige set build-instructies te vormen.
Procesoverzicht
Het projectbestand dat u gaat gebruiken om de Oplossing Contact Manager te bouwen en te implementeren, wordt gesplitst in twee fysieke bestanden:
- Een met universele build-instellingen en instructies (het bestand Publish.proj ).
- Een met omgevingsspecifieke build-instellingen (Env-Dev.proj, Env-Stage.proj, enzovoort).
Tijdens de build wordt het juiste omgevingsspecifieke projectbestand samengevoegd in het universal Publish.proj-bestand om een volledige set build-instructies te vormen. U kunt implementatie configureren voor specifieke doelomgevingen door omgevingsspecifieke projectbestanden te maken of aan te passen met instellingen die uw eigen implementatiescenario beschrijven.
Veel van deze waarden worden bepaald door de manier waarop uw doelomgeving is geconfigureerd, met name of uw doelwebserver is geconfigureerd voor het gebruik van de webimplementatieagentservice (de externe agent) of de webimplementatiehandler. Zie De juiste benadering voor webimplementatie kiezen voor meer informatie over deze benaderingen en voor hulp bij het kiezen van de juiste benadering voor uw eigen omgeving.
Voor het Contact Manager-scenario zijn twee omgevingsspecifieke projectbestanden vereist:
- Implementatie naar een testomgeving voor ontwikkelaars (Env-Dev.proj). De testomgeving voor ontwikkelaars is geconfigureerd voor het accepteren van externe implementaties met behulp van de externe agent, zoals beschreven in Scenario: Een testomgeving configureren voor webimplementatie. Dit bestand moet het eindpuntadres van de externe agent en locatiespecifieke instellingen opgeven, zoals verbindingsreeksen en service-eindpunten.
- Implementatie naar een faseringsomgeving (Env-Stage.proj). De faseringsomgeving is geconfigureerd voor het accepteren van externe implementaties met behulp van de Web Deploy Handler, zoals beschreven in Scenario: Een faseringsomgeving configureren voor webimplementatie. Dit bestand moet het eindpuntadres van de Web Deploy Handler en locatiespecifieke instellingen, zoals verbindingsreeksen en service-eindpunten, opgeven.
Het is belangrijk te weten dat de instellingen die u in het omgevingsspecifieke projectbestand configureert, niet van invloed zijn op de inhoud van het webpakket zelf. In plaats daarvan bepalen ze hoe het pakket wordt geïmplementeerd en welke parameterwaarden worden opgegeven wanneer het pakket wordt geëxtraheerd. U importeert het webpakket handmatig in de productieomgeving, zoals beschreven in Scenario: Een productieomgeving configureren voor webimplementatie en het handmatig installeren van webpakketten, dus het maakt niet uit welke instellingen u hebt gebruikt in het omgevingsspecifieke projectbestand toen u het pakket hebt gegenereerd. IiS-beheer (Internet Information Services) vraagt u om geparameteriseerde waarden, zoals verbindingsreeksen en service-eindpunten, wanneer u het pakket importeert.
Als u de Contact Manager-oplossing wilt implementeren in uw eigen doelomgeving, kunt u dit bestand aanpassen of als sjabloon gebruiken en uw eigen bestand maken.
Omgevingsspecifieke implementatie-instellingen configureren voor de Contact Manager-oplossing
Open de ContactManager-WCF-oplossing in Visual Studio 2010.
Vouw in het venster Solution Explorer de map Publiceren uit, vouw de map EnvConfig uit en dubbelklik vervolgens op Env-Dev.proj.
Vervang de eigenschapswaarden in het bestand Env-Dev.proj door de juiste waarden voor uw eigen testomgeving.
Opmerking
De tabel die volgt op deze procedure bevat meer informatie over elk van deze eigenschappen.
Sla uw werk op en sluit het bestand Env-Dev.proj .
De juiste implementatie-eigenschappen kiezen
In deze tabel wordt het doel van elke eigenschap in het voorbeeldomgevingsspecifieke projectbestand Env-Dev.proj beschreven en worden enkele richtlijnen gegeven voor de waarden die u moet opgeven.
| Naam van propertie | Bijzonderheden |
|---|---|
| MSDeployComputerName De naam van de doelwebserver of het service-eindpunt. | Als u implementeert in de externe agentservice op de doelwebserver, kunt u de naam van de doelcomputer opgeven (bijvoorbeeld TESTWEB1 of TESTWEB1.fabrikam.net), of u kunt het eindpunt van de externe agent opgeven (bijvoorbeeld http://TESTWEB1/MSDEPLOYAGENTSERVICE). De implementatie werkt in elk geval op dezelfde manier. Als u implementeert in de Web Deploy Handler op de doelwebserver, moet u het service-eindpunt opgeven en de naam van de IIS-website opnemen als een querytekenreeksparameter (bijvoorbeeld https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite). |
| MSDeployAuth De methode die Web Deploy moet gebruiken om te verifiëren bij de externe computer. | Dit moet worden ingesteld op NTLM of Basic. Normaal gesproken gebruikt u NTLM als u implementeert in de externe agentservice en Basic als u implementeert in de Web Deploy Handler. Als u basisverificatie gebruikt, moet u ook de gebruikersnaam en het wachtwoord opgeven die het IIS-hulpprogramma voor webimplementatie (webimplementatie) moet imiteren om de implementatie uit te voeren. In dit voorbeeld worden deze waarden opgegeven via de eigenschappen MSDeployUsername en MSDeployPassword . Als u NTLM-verificatie gebruikt, kunt u deze eigenschappen weglaten of leeg laten. |
| MSDeployUsername Als u basisverificatie gebruikt, gebruikt Web Deploy dit account op de externe computer. | Dit moet de vorm DOMEIN*gebruikersnaam* hebben (bijvoorbeeld FABRIKAM\matt). Deze waarde wordt alleen gebruikt als u basisverificatie opgeeft. Als u NTLM-verificatie gebruikt, kan de eigenschap worden weggelaten. Als er een waarde wordt opgegeven, wordt deze genegeerd. |
| MSDeployPassword Als u basisverificatie gebruikt, gebruikt Web Deploy dit wachtwoord op de externe computer. | Dit is het wachtwoord voor het gebruikersaccount dat u hebt opgegeven in de eigenschap MSDeployUsername . Deze waarde wordt alleen gebruikt als u basisverificatie opgeeft. Als u NTLM-verificatie gebruikt, kan de eigenschap worden weggelaten. Als er een waarde wordt opgegeven, wordt deze genegeerd. |
| ContactManagerIisPath Het IIS-pad waarop u de MVC-toepassing contactbeheer wilt implementeren. | Dit moet het pad zijn zoals het in IIS-beheer wordt weergegeven, in het formulier [IIS-websitenaam]/[webtoepassingsnaam]. Houd er rekening mee dat de IIS-website moet bestaan voordat u uw toepassing implementeert. Als u bijvoorbeeld een IIS-website met de naam DemoSite hebt gemaakt, kunt u het IIS-pad voor de MVC-toepassing opgeven als DemoSite/ContactManager. |
| ContactManagerServiceIisPath Het IIS-pad waarop u de WCF-service contactbeheer wilt implementeren. | Als u bijvoorbeeld een IIS-website met de naam DemoSite hebt gemaakt, kunt u het IIS-pad voor de WCF-service opgeven als DemoSite/ContactManagerService. |
| ContactManagerTargetUrl De URL waarmee de WCF-service kan worden bereikt. | Dit heeft de vorm [HOOFD-URL van IIS-website]/[naam van servicetoepassing]/[service-eindpunt]. Als u bijvoorbeeld een IIS-website hebt gemaakt op poort 85, zou de URL het formulier http://localhost:85/ContactManagerService/ContactService.svcaannemen. Houd er rekening mee dat de MVC-toepassing en de WCF-service op dezelfde server zijn geïmplementeerd. Als gevolg hiervan is deze URL alleen toegankelijk vanaf de computer waarop deze is geïnstalleerd. Daarom is het beter om localhost of het IP-adres te gebruiken, in plaats van de computernaam of een hostheader, in de URL. Als u de naam van de machine of een hostheader gebruikt, kan de beveiligingsfunctie voor loopbackcontrole in IIS de URL blokkeren en een HTTP 401.1- Fout niet geautoriseerd retourneren. |
| CmDatabaseConnectionString De verbindingsreeks voor de databaseserver. | De verbindingsreeks bepaalt zowel de referenties die VSDBCMD gebruikt om contact op te nemen met de databaseserver en met de database te communiceren als de referenties die door de toepassingspool van de webserver worden gebruikt om contact op te nemen met de databaseserver en met de database te communiceren. In wezen heb je hier twee keuzes. U kunt Geïntegreerde beveiliging=true opgeven. In dat geval wordt geïntegreerde Windows-verificatie gebruikt: Gegevensbron=TESTDB1; Integrated Security=true In dit geval wordt de database gemaakt met behulp van de referenties van de gebruiker die het uitvoerbare VSDBCMD-bestand uitvoert. De toepassing heeft toegang tot de database met behulp van de identiteit van het webservercomputeraccount. U kunt ook de gebruikersnaam en het wachtwoord van een SQL Server-account opgeven. In dit geval worden de SQL Server-referenties gebruikt door VSDBCMD om de database en de groep van toepassingen te maken om te communiceren met de database: Gegevensbron=TESTDB1; Gebruikers-id=ASqlUser; Wachtwoord=; In de stapsgewijze instructies in dit onderwerp wordt ervan uitgegaan dat u geïntegreerde Windows-verificatie gebruikt. |
| CmTargetDatabase De naam die u wilt geven aan de database die u maakt op de databaseserver. | De waarde die u hier opgeeft, wordt als parameter toegevoegd aan de VSDBCMD-opdracht. Het wordt ook gebruikt om een volledige verbindingsreeks te maken die de groep van toepassingen op de webserver kan gebruiken om te communiceren met de database. |
Deze voorbeelden laten zien hoe u deze eigenschappen kunt configureren voor specifieke implementatiescenario's.
Voorbeeld 1: Implementatie naar de Remote Agent-service
In dit voorbeeld:
- Je bent bezig met het implementeren naar de externe agentservice op TESTWEB1.
- U geeft Web Deploy de opdracht om NTLM-verificatie te gebruiken. Web Deploy wordt uitgevoerd met behulp van de referenties die u hebt gebruikt om de Microsoft Build Engine (MSBuild) aan te roepen.
- U gebruikt geïntegreerde verificatie om de ContactManager-database te implementeren in TESTDB1. De database wordt geïmplementeerd met behulp van de referenties die u hebt gebruikt om MSBuild aan te roepen.
<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>
Voorbeeld 2: implementatie naar het eindpunt van de webimplementatiehandler
In dit voorbeeld:
- U implementeert op het service-eindpunt van de Web Deploy Handler op STAGEWEB1.
- U geeft Web Deploy de opdracht om basisverificatie te gebruiken.
- U geeft op dat Web Deploy het FABRIKAM\stagingdeployer-account op de externe computer moet imiteren.
- U gebruikt SQL Server-verificatie om de ContactManager-database te implementeren in 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>
Conclusie
Op dit moment zijn uw projectbestanden volledig geconfigureerd voor het bouwen en implementeren van de Contact Manager-oplossing in een of meer doelomgevingen.
Als u deze projectbestanden wilt gebruiken als onderdeel van een herhaalbaar implementatieproces met één stap, moet u het bestand Publish.proj uitvoeren met MSBuild en de locatie van het omgevingsspecifieke projectbestand doorgeven als parameter. U kunt dit op verschillende manieren doen:
- Zie Inzicht in het projectbestand voor een overzicht van MSBuild en een inleiding tot aangepaste projectbestanden.
- Zie Webpakketten implementeren voor informatie over het formuleren van een MSBuild-opdracht waarmee uw aangepaste projectbestanden worden uitgevoerd.
- Zie Een opdrachtbestand voor implementatie maken en uitvoeren voor informatie over hoe u uw MSBuild-commando's kunt opnemen in een opdrachtbestand voor implementaties met één stap.
- Zie Een builddefinitie maken die ondersteuning biedt voor implementatie voor informatie over het uitvoeren van uw aangepaste projectbestanden vanuit Team Build.