Bagikan melalui


<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>

Lihat juga