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ış None
olan 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/mex
sonuç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 true
olarak 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?wsdl
kullanı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 false
ayarlarsanı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
Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.
Çö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.
Ö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.