Meta Veri Yayımlama Davranışı

Meta veri örneği, bir hizmetin meta veri yayımlama özelliklerini denetlemeyi gösterir. Hassas olabilecek hizmet meta verilerinin yanlışlıkla açıklanmasını önlemek için, Windows Communication Foundation (WCF) hizmetleri için varsayılan yapılandırma meta veri yayımlamayı devre dışı bırakır. Bu davranış varsayılan olarak güvenlidir, ancak aynı zamanda hizmetin meta veri yayımlama davranışı yapılandırmada açıkça etkinleştirilmediği sürece hizmeti çağırmak için gereken istemci kodunu oluşturmak için bir meta veri içeri aktarma aracı (örneğin Svcutil.exe) kullanamazsınız.

Önemli

Netlik sağlamak için bu örnekte güvenli olmayan meta veri yayımlama uç noktasının nasıl oluşturulacağı gösterilmektedir. Bu tür uç noktalar anonim kimliği doğrulanmamış tüketiciler tarafından kullanılabilir ve hizmetin meta verilerini genel olarak açıklamanın uygun olduğundan emin olmak için bu uç noktalar dağıtılmadan önce dikkatli olunmalıdır. Meta veri uç noktasının güvenliğini sağlayan bir örnek için bkz. Özel Güvenli Meta Veri Uç Noktası örneği.

Örnek, hizmet sözleşmesini uygulayan Başlarken'iICalculator temel alır. Bu örnekte istemci bir konsol uygulamasıdır (.exe) ve hizmet Internet Information Services (IIS) tarafından barındırılır.

Not

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Bir hizmetin meta verileri kullanıma sunması ServiceMetadataBehavior için, hizmette yapılandırılması gerekir. Bu davranış mevcut olduğunda, sözleşmeyi IMetadataExchange bir WS-MetadataExchange (MEX) protokolünün uygulaması olarak kullanıma sunmak için bir uç nokta yapılandırarak meta verileri yayımlayabilirsiniz. Kolaylık olması açısından, bu sözleşmeye "IMetadataExchange" kısaltmalı yapılandırma adı verilmiştir. Bu örnek, güvenlik modu olarak ayarlanmış Noneolan ile eşdeğer wsHttpBinding olan bir kolaylık standart bağlaması olan öğesini kullanırmexHttpBinding. Uç noktada göreli bir "mex" adresi kullanılır ve hizmetler temel adresi çözümlendiğinde uç nokta adresi olarak http://localhost/servicemodelsamples/service.svc/mexsonuçlanır. Davranış yapılandırması aşağıda gösterilmiştir:

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

Aşağıda MEX uç noktası gösterilmektedir.

<!-- 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" />

Bu örnek, http GET kullanarak hizmetin meta verilerini de kullanıma sunan özelliğini trueolarak ayarlarHttpGetEnabled. HTTP GET meta veri uç noktasını etkinleştirmek için hizmetin bir HTTP temel adresi olmalıdır. Sorgu dizesi ?wsdl , meta verilere erişmek için hizmetin temel adresinde kullanılır. Örneğin, bir Web tarayıcısında hizmetin WSDL'sini görmek için adresini http://localhost/servicemodelsamples/service.svc?wsdlkullanırsınız. Alternatif olarak, https üzerinden meta verileri kullanıma açmak için bu davranışı kullanabilirsiniz.HttpsGetEnabledtrue Bunun için bir HTTPS temel adresi gerekir.

Hizmetin MEX uç noktasına erişmek için ServiceModel Meta Veri Yardımcı Programı Aracı'nı (Svcutil.exe) kullanın.

svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs

Bu, hizmetin meta verilerini temel alan bir istemci oluşturur.

HTTP GET kullanarak hizmetin meta verilerine erişmek için tarayıcınızı konumuna gelin http://localhost/servicemodelsamples/service.svc?wsdl.

Bu davranışı kaldırır ve hizmeti açmaya çalışırsanız bir özel durum alırsınız. Bu hatanın nedeni davranış olmadan sözleşmeyle yapılandırılan uç noktanın IMetadataExchange uygulaması olmamasıdır.

olarak falseayarlarsanızHttpGetEnabled, hizmetin meta verilerini görmek yerine CalculatorService yardım sayfasını görürsünüz.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.