<serviceMetadata>
Menentukan publikasi metadata layanan dan informasi terkait.
<konfigurasi>
<system.serviceModel>
<perilaku>
<serviceBehaviors>
<perilaku>
<serviceMetadata>
Sintaks
<serviceMetadata externalMetadataLocation="String"
httpGetBinding="String"
httpGetBindingConfiguration="String"
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding="String"
httpsGetBindingConfiguration="String"
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15" />
Atribut dan Elemen
Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.
Atribut
Atribut | Deskripsi |
---|---|
externalMetadataLocation | Uri yang berisi lokasi file WSDL, yang dikembalikan kepada pengguna sebagai respons terhadap permintaan WSDL dan MEX alih-alih WSDL yang dihasilkan secara otomatis. Ketika atribut ini tidak diatur, WSDL default dikembalikan. Defaultnya adalah string kosong. |
httpGetBinding | String yang menentukan jenis pengikatan yang akan digunakan untuk pengambilan metadata melalui HTTP GET. Pengaturan ini bersifat opsional. Jika tidak ditentukan, pengikatan default akan digunakan. Hanya pengikatan dengan elemen pengikatan dalam yang mendukung IReplyChannel yang akan didukung. Selain itu, properti MessageVersion pengikatan harus None. |
httpGetBindingConfiguration | String yang mengatur nama pengikatan yang ditentukan dalam atribut httpGetBinding , yang mereferensikan ke informasi konfigurasi tambahan dari pengikatan ini. Nama yang sama harus ditentukan di bagian <bindings> . |
httpGetEnabled | Nilai Boolean yang menentukan apakah akan menerbitkan metadata layanan untuk pengambilan menggunakan permintaan HTTP/Get. Defaultnya adalah false .Jika atribut httpGetUrl tidak ditentukan, alamat tempat metadata diterbitkan adalah alamat layanan ditambah "?wsdl". Misalnya, jika alamat layanan adalah http://localhost:8080/CalculatorService , alamat metadata HTTP/Get adalah http://localhost:8080/CalculatorService?wsdl .Jika properti ini adalah false , atau alamat layanan tidak didasarkan pada HTTP atau HTTPS, "?wsdl" diabaikan. |
httpGetUrl | Uri yang menentukan alamat tempat metadata diterbitkan untuk pengambilan menggunakan permintaan HTTP/Get. Jika Uri relatif ditentukan, Uri tersebut akan diperlakukan relatif terhadap alamat dasar layanan. |
httpsGetBinding | String yang menentukan jenis pengikatan yang akan digunakan untuk pengambilan metadata melalui HTTPS GET. Pengaturan ini bersifat opsional. Jika tidak ditentukan, pengikatan default akan digunakan. Hanya pengikatan dengan elemen pengikatan dalam yang mendukung IReplyChannel yang akan didukung. Selain itu, properti MessageVersion pengikatan harus None. |
httpsGetBindingConfiguration | String yang mengatur nama pengikatan yang ditentukan dalam atribut httpsGetBinding , yang mereferensikan ke informasi konfigurasi tambahan dari pengikatan ini. Nama yang sama harus ditentukan di bagian <bindings> . |
httpsGetEnabled | Nilai Boolean yang menentukan apakah akan menerbitkan metadata layanan untuk pengambilan menggunakan permintaan HTTPS/Get. Defaultnya adalah false .Jika atribut httpsGetUrl tidak ditentukan, alamat tempat metadata diterbitkan adalah alamat layanan ditambah "?wsdl". Misalnya, jika alamat layanan adalah https://localhost:8080/CalculatorService , alamat metadata HTTP/Get adalah https://localhost:8080/CalculatorService?wsdl .Jika properti ini adalah false , atau alamat layanan tidak didasarkan pada HTTP atau HTTPS, "?wsdl" diabaikan. |
httpsGetUrl | Uri yang menentukan alamat tempat metadata diterbitkan untuk pengambilan menggunakan permintaan HTTPS/Get. |
versiKebijakan | String yang menentukan versi spesifikasi WS-Policy yang digunakan. Atribut ini berjenis PolicyVersion. |
Elemen Anak
Tidak ada
Elemen Induk
Elemen | Deskripsi |
---|---|
<perilaku> | Menentukan elemen perilaku. |
Keterangan
Elemen konfigurasi ini memungkinkan Anda mengontrol fitur penerbitan metadata layanan. Untuk mencegah pengungkapan tidak sengaja metadata layanan yang kemungkinan sensitif, 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. Menggunakan elemen konfigurasi ini, Anda dapat mengaktifkan perilaku penerbitan ini untuk layanan Anda.
Untuk contoh terperinci dalam mengonfigurasi perilaku ini, lihat Perilaku Penerbitan Metadata.
Atribut httpGetBinding
dan httpsGetBinding
opsional memungkinkan Anda mengonfigurasi pengikatan yang digunakan untuk pengambilan metadata melalui HTTP GET (atau HTTPS GET). Jika tidak ditentukan, pengikatan default (HttpTransportBindingElement
, dalam kasus HTTP dan HttpsTransportBindingElement
, dalam kasus HTTPS) digunakan untuk pengambilan metadata yang sesuai. Perhatikan bahwa Anda tidak dapat menggunakan atribut ini dengan pengikatan WCF bawaan. Hanya pengikatan dengan elemen pengikatan dalam yang mendukung IReplyChannel yang akan didukung. Selain itu, properti MessageVersion pengikatan harus None.
Untuk mengurangi paparan layanan kepada pengguna berbahaya, dimungkinkan untuk mengamankan transfer menggunakan mekanisme SSL melalui HTTP (HTTPS). Untuk melakukannya, Anda harus terlebih dahulu mengikat sertifikat X.509 yang sesuai ke port tertentu di komputer yang menghosting layanan. (Untuk informasi selengkapnya, lihat Bekerja dengan Sertifikat.) Kedua, tambahkan elemen ini ke konfigurasi layanan dan atur atribut httpsGetEnabled
ke true
. Terakhir, atur atribut httpsGetUrl
ke URL titik akhir metadata layanan, seperti yang ditunjukkan dalam contoh berikut.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Contoh
Contoh berikut mengonfigurasi layanan untuk mengekspos metadata dengan menggunakan elemen <serviceMetadata>. Ini juga mengonfigurasi titik akhir untuk mengekspos kontrak IMetadataExchange
sebagai implementasi protokol WS-MetadataExchange (MEX). Contohnya menggunakan mexHttpBinding
, yang merupakan pengikatan standar kenyamanan yang setara dengan wsHttpBinding
menggunakan mode keamanan yang diatur ke None
. Alamat relatif "mex" digunakan dalam titik akhir, yang ketika diselesaikan terhadap alamat dasar layanan menghasilkan alamat titik akhir http://localhost/servicemodelsamples/service.svc/mex
.
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by the host: http://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- 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 below. -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<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 above. Setting httpGetEnabled to true publishes
the service's WSDL at the <baseaddress>?wsdl eg. http://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>