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.
Sampel Metadata menunjukkan cara mengontrol fitur penerbitan metadata layanan. Untuk mencegah pengungkapan metadata layanan yang berpotensi sensitif secara tidak disengaja, konfigurasi default untuk layanan Windows Communication Foundation (WCF) menonaktifkan penerbitan metadata. Perilaku ini aman secara default, tetapi juga berarti Anda tidak dapat menggunakan alat impor metadata (seperti Svcutil.exe) untuk menghasilkan kode klien yang diperlukan untuk memanggil layanan kecuali perilaku penerbitan metadata layanan diaktifkan secara eksplisit dalam konfigurasi.
Penting
Untuk kejelasan, sampel ini menunjukkan cara membuat titik akhir penerbitan metadata yang tidak aman. Titik akhir tersebut berpotensi tersedia untuk konsumen anonim dan tanpa autentikasi. Perhatian harus diberikan sebelum menggunakan titik akhir tersebut untuk memastikan bahwa pengungkapan metadata layanan secara publik sesuai. Lihat sampel Titik Akhir Metadata Aman Kustom untuk sampel yang mengamankan titik akhir metadata.
Sampel ini didasarkan pada panduan Memulai, yang mengimplementasikan ICalculator kontrak layanan. Dalam sampel ini, klien adalah aplikasi konsol (.exe) dan layanan dihosting oleh Internet Information Services (IIS).
Nota
Prosedur penyiapan dan instruksi build untuk sampel ini terletak di akhir topik ini.
Agar layanan mengekspos metadata, ServiceMetadataBehavior harus dikonfigurasi pada layanan. Jika perilaku ini ada, Anda dapat menerbitkan metadata dengan mengonfigurasi titik akhir untuk mengekspos kontrak IMetadataExchange sebagai implementasi dari protokol WS-MetadataExchange (MEX). Untuk kemudahan, kontrak ini telah diberi nama singkatan "IMetadataExchange". Sampel ini menggunakan mexHttpBinding, yang merupakan pengikatan standar kenyamanan yang setara wsHttpBinding dengan dengan mode keamanan yang diatur ke None. Alamat relatif "mex" digunakan di titik akhir, yang ketika diselesaikan terhadap alamat dasar layanan menghasilkan alamat http://localhost/servicemodelsamples/service.svc/mextitik akhir . Berikut ini menunjukkan konfigurasi perilaku:
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<!-- The serviceMetadata behavior publishes metadata through
the IMetadataExchange contract. When this behavior is
present, you can expose this contract through an endpoint
as shown below. Setting httpGetEnabled to true publishes
the service's WSDL at the <baseaddress>?wsdl, for example,
http://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
Berikut ini memperlihatkan titik akhir MEX.
<!-- the MEX endpoint is exposed at
http://localhost/servicemodelsamples/service.svc/mex
To expose the IMetadataExchange contract, you
must enable the serviceMetadata behavior as demonstrated
previously. -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
Sampel ini mengatur HttpGetEnabled properti ke true, yang juga mengekspos metadata layanan menggunakan HTTP GET. Untuk mengaktifkan titik akhir metadata HTTP GET, layanan harus memiliki alamat dasar HTTP. Kueri string ?wsdl digunakan pada URL dasar layanan untuk mengakses metadata. Misalnya, untuk melihat WSDL untuk layanan di browser Web, Anda akan menggunakan alamat http://localhost/servicemodelsamples/service.svc?wsdl. Atau, Anda dapat menggunakan perilaku ini untuk mengekspos metadata melalui HTTPS dengan mengatur HttpsGetEnabled ke true. Ini memerlukan alamat dasar HTTPS.
Untuk mengakses titik akhir MEX layanan, gunakan ServiceModel Metadata Utility Tool (Svcutil.exe).
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
Ini menghasilkan klien berdasarkan metadata layanan.
Untuk mengakses metadata layanan menggunakan HTTP GET, arahkan browser Anda ke http://localhost/servicemodelsamples/service.svc?wsdl.
Jika Anda menghapus perilaku ini dan mencoba membuka layanan, Anda mendapatkan pengecualian. Kesalahan ini terjadi karena tanpa fungsi, endpoint yang dikonfigurasi dengan kontrak IMetadataExchange tidak memiliki implementasi.
Jika Anda mengatur HttpGetEnabled ke false, Anda akan melihat halaman bantuan CalculatorService alih-alih melihat metadata layanan.
Untuk menyiapkan, mengompilasi, dan menjalankan sampel
Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.
Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti instruksi di Membangun Sampel Windows Communication Foundation.
Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi di Menjalankan Sampel Windows Communication Foundation.