Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Jason Lee
Topik ini menjelaskan cara mengatur nilai parameter, seperti nama aplikasi web Internet Information Services (IIS), string koneksi, dan titik akhir layanan, saat Anda menyebarkan paket web ke server web IIS jarak jauh.
Saat Anda membangun proyek aplikasi web, proses build dan pengemasan menghasilkan tiga file kunci:
- File [nama proyek].zip . Ini adalah paket penyebaran web untuk proyek aplikasi web Anda. Paket ini berisi semua rakitan, file, skrip database, dan sumber daya yang diperlukan untuk membuat ulang aplikasi web Anda di server web IIS jarak jauh.
- File [nama proyek].deploy.cmd. Ini berisi sekumpulan perintah Web Deploy (MSDeploy.exe) parameter yang menerbitkan paket penyebaran web Anda ke server web IIS jarak jauh.
- File [nama proyek].SetParameters.xml . Ini menyediakan sekumpulan nilai parameter ke perintah MSDeploy.exe. Anda dapat memperbarui nilai dalam file ini dan meneruskannya ke Web Deploy sebagai parameter baris perintah saat Anda menyebarkan paket web Anda.
Catatan
Untuk informasi selengkapnya tentang proses build dan pengemasan, lihat Membangun dan Mengemas Proyek Aplikasi Web.
File SetParameters.xml dihasilkan secara dinamis dari file proyek aplikasi web Anda dan file konfigurasi apa pun dalam proyek Anda. Saat Anda membangun dan mengemas proyek Anda, Web Publishing Pipeline (WPP) akan secara otomatis mendeteksi banyak variabel yang kemungkinan akan berubah antara lingkungan penyebaran, seperti aplikasi web IIS tujuan dan string koneksi database apa pun. Nilai-nilai ini secara otomatis diparameterkan dalam paket penyebaran web dan ditambahkan ke file SetParameters.xml . Misalnya, jika Anda menambahkan string koneksi ke file web.config dalam proyek aplikasi web Anda, proses build akan mendeteksi perubahan ini dan akan menambahkan entri ke file SetParameters.xml yang sesuai.
Dalam banyak kasus, parameterisasi otomatis ini akan cukup. Namun, jika pengguna Anda perlu memvariasikan pengaturan lain antara lingkungan penyebaran, seperti pengaturan aplikasi atau URL titik akhir layanan, Anda perlu memberi tahu WPP untuk membuat parameter nilai-nilai ini dalam paket penyebaran dan menambahkan entri yang sesuai ke file SetParameters.xml . Bagian yang mengikuti menjelaskan cara melakukan ini.
Parameterisasi Otomatis
Saat Anda membangun dan mengemas aplikasi web, WPP akan secara otomatis membuat parameter hal-hal ini:
- Jalur dan nama aplikasi web IIS tujuan.
- String koneksi apa pun dalam file web.config Anda.
- String koneksi untuk database apa pun yang Anda tambahkan ke tab Paket/Terbitkan SQL di halaman properti proyek.
Misalnya, jika Anda membuat dan mengemas solusi sampel Contact Manager tanpa menyentuh proses parameterisasi dengan cara apa pun, WPP akan menghasilkan file ContactManager.Mvc.SetParameters.xml ini:
<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>
Dalam hal ini:
- Parameter Nama Aplikasi Web IIS adalah jalur IIS tempat Anda ingin menyebarkan aplikasi web. Nilai default diambil dari halaman Web Paket/Terbitkan di halaman properti proyek.
- Parameter String KoneksiApplicationServices-Web.config dihasilkan dari elemen connectionStrings/add dalam file web.config . Ini mewakili string koneksi yang harus digunakan aplikasi untuk menghubungi database keanggotaan. Nilai yang Anda berikan di sini akan diganti ke dalam file web.config yang disebarkan. Nilai default diambil dari file web.config pra-penyebaran.
WPP juga membuat parameter properti ini dalam paket penyebaran yang dihasilkannya. Anda dapat menyediakan nilai untuk properti ini saat menginstal paket penyebaran. Jika Anda menginstal paket secara manual melalui IIS Manager, seperti yang dijelaskan dalam Menginstal Paket Web Secara Manual, wizard penginstalan akan meminta Anda untuk memberikan nilai untuk parameter apa pun. Jika Anda menginstal paket dari jarak jauh menggunakan file .deploy.cmd , seperti yang dijelaskan dalam Menyebarkan Paket Web, Web Deploy akan melihat ke file SetParameters.xml ini untuk memberikan nilai parameter. Anda dapat mengedit nilai dalam file SetParameters.xml secara manual, atau Anda dapat menyesuaikan file sebagai bagian dari proses build dan penyebaran otomatis. Proses ini dijelaskan secara lebih rinci nanti dalam topik ini.
Parameterisasi Kustom
Dalam skenario penyebaran yang lebih kompleks, Anda sering ingin membuat parameter properti tambahan sebelum menyebarkan proyek Anda. Secara umum, Anda harus membuat parameter properti dan pengaturan apa pun yang akan bervariasi di antara lingkungan tujuan. Titik masuk ini dapat mencakup:
- Titik akhir layanan dalam file web.config .
- Pengaturan aplikasi dalam file web.config .
- Properti deklaratif lainnya yang ingin Anda minta untuk ditentukan pengguna.
Cara term mudah untuk membuat parameter properti ini adalah dengan menambahkan file parameters.xml ke folder akar proyek aplikasi web Anda. Misalnya, dalam solusi Contact Manager, proyek ContactManager.Mvc menyertakan file parameters.xml di folder akar.
Jika Anda membuka file ini, Anda akan melihat bahwa file tersebut berisi entri parameter tunggal. Entri menggunakan kueri XML Path Language (XPath) untuk menemukan dan membuat parameter URL titik akhir layanan ContactService Windows Communication Foundation (WCF) dalam file web.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>
Selain membuat parameter URL titik akhir dalam paket penyebaran, WPP juga menambahkan entri yang sesuai ke file SetParameters.xml yang dihasilkan bersama paket penyebaran.
<parameters>
...
<setParameter
name="ContactService Service Endpoint Address"
value="http://localhost/ContactManagerService" />
...
</parameters>
Jika Anda menginstal paket penyebaran secara manual, IIS Manager akan meminta alamat titik akhir layanan bersama properti yang diparameterkan secara otomatis. Jika Anda menginstal paket penyebaran dengan menjalankan file .deploy.cmd , Anda dapat mengedit file SetParameters.xml untuk memberikan nilai untuk alamat titik akhir layanan bersama dengan nilai untuk properti yang diparameterkan secara otomatis.
Untuk detail selengkapnya tentang cara membuat file parameters.xml , lihat Cara: Menggunakan Parameter untuk Mengonfigurasi Pengaturan Penyebaran Saat Paket Diinstal. Prosedur bernama Untuk menggunakan parameter penyebaran untuk pengaturan file Web.config menyediakan instruksi langkah demi langkah.
Memodifikasi File SetParameters.xml
Jika Anda berencana untuk menyebarkan paket aplikasi web secara manual—baik dengan menjalankan file .deploy.cmd atau dengan menjalankan MSDeploy.exe dari baris perintah—tidak ada yang menghentikan Anda mengedit file SetParameters.xml secara manual sebelum penyebaran. Namun, jika Anda mengerjakan solusi skala perusahaan, Anda mungkin perlu menyebarkan paket aplikasi web sebagai bagian dari proses pembangunan dan penyebaran otomatis yang lebih besar. Dalam skenario ini, Anda memerlukan Microsoft Build Engine (MSBuild) untuk memodifikasi file SetParameters.xml untuk Anda. Anda dapat melakukan ini dengan menggunakan tugas MSBuild XmlPoke .
Solusi sampel Contact Manager mengilustrasikan proses ini. Contoh kode yang mengikuti telah diedit untuk memperlihatkan hanya detail yang relevan dengan contoh ini.
Catatan
Untuk gambaran umum yang lebih luas tentang model file proyek dalam solusi sampel, dan pengantar file proyek kustom secara umum, lihat Memahami File Proyek dan Memahami Proses Build.
Pertama, nilai parameter yang menarik didefinisikan sebagai properti dalam file proyek khusus lingkungan (misalnya, 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>
Catatan
Untuk panduan tentang cara menyesuaikan file proyek khusus lingkungan untuk lingkungan server Anda sendiri, lihat Mengonfigurasi Properti Penyebaran untuk Lingkungan Target.
Selanjutnya, file Publish.proj mengimpor properti ini. Karena setiap file SetParameters.xml dikaitkan dengan file .deploy.cmd , dan kami pada akhirnya ingin file proyek memanggil setiap file .deploy.cmd , file proyek membuat item MSBuild untuk setiap file .deploy.cmd dan menentukan properti yang menarik sebagai metadata item.
<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>
Dalam hal ini:
- Nilai metadata ParametersXml menunjukkan lokasi file SetParameters.xml .
- Nilai IisWebAppName adalah jalur IIS tempat Anda ingin menyebarkan aplikasi web.
- Nilai MembershipDBConnectionString adalah string koneksi untuk database keanggotaan, dan nilai MembershipDBConnectionName adalah atribut nama parameter yang sesuai dalam file SetParameters.xml .
- Nilai ServiceEndpointValue adalah alamat titik akhir untuk layanan WCF di server tujuan, dan nilai ServiceEndpointParamName adalah atribut nama parameter yang sesuai dalam file SetParameters.xml .
Terakhir, dalam file Publish.proj , target PublishWebPackages menggunakan tugas XmlPoke untuk mengubah nilai-nilai ini dalam file SetParameters.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>
Anda akan melihat bahwa setiap tugas XmlPoke menentukan empat nilai atribut:
- Atribut XmlInputPath memberi tahu tugas tempat menemukan file yang ingin Anda ubah.
- Atribut Kueri adalah kueri JalurX yang mengidentifikasi simpul XML yang ingin Anda ubah.
- Atribut Nilai adalah nilai baru yang ingin Anda sisipkan ke dalam simpul XML yang dipilih.
- Atribut Kondisi adalah kriteria tempat tugas harus berjalan atau tidak dijalankan. Dalam kasus ini, kondisi memastikan bahwa Anda tidak mencoba menyisipkan nilai null atau kosong ke dalam file SetParameters.xml .
Kesimpulan
Topik ini menjelaskan peran file SetParameters.xml dan menjelaskan bagaimana hal itu dihasilkan saat Anda membangun proyek aplikasi web. Ini menjelaskan bagaimana Anda dapat membuat parameter pengaturan tambahan dengan menambahkan file parameters.xml ke proyek Anda. Ini juga menjelaskan bagaimana Anda dapat memodifikasi file SetParameters.xml sebagai bagian dari proses build otomatis yang lebih besar, dengan menggunakan tugas XmlPoke dalam file proyek Anda.
Topik berikutnya, Menyebarkan Paket Web, menjelaskan bagaimana Anda dapat menyebarkan paket web baik dengan menjalankan file .deploy.cmd atau dengan menggunakan perintah MSDeploy.exe secara langsung. Dalam kedua kasus, Anda dapat menentukan file SetParameters.xml sebagai parameter penyebaran.
Bacaan lebih lanjut
Untuk informasi tentang cara membuat paket web, lihat Membangun dan Mengemas Proyek Aplikasi Web. Untuk panduan tentang cara benar-benar menyebarkan paket web, lihat Menyebarkan Paket Web. Untuk panduan langkah demi langkah tentang cara membuat file parameters.xml , lihat Cara: Menggunakan Parameter untuk Mengonfigurasi Pengaturan Penyebaran Saat Paket Diinstal.
Untuk informasi umum selengkapnya tentang parameterisasi di Web Deploy, lihat Parameterisasi Penyebaran Web dalam Tindakan (posting blog).