Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka metadat ukazuje, jak řídit funkce publikování metadat služby. Aby se zabránilo neúmyslnému zpřístupnění potenciálně citlivých metadat služby, výchozí konfigurace pro služby WCF (Windows Communication Foundation) zakáže publikování metadat. Toto chování je ve výchozím nastavení zabezpečené, ale také to znamená, že nemůžete použít nástroj pro import metadat (například Svcutil.exe) k vygenerování kódu klienta potřebného k volání služby, pokud není explicitně povolené chování publikování metadat služby v konfiguraci.
Důležité
Pro přehlednost tato ukázka ukazuje, jak vytvořit nezabezpečený koncový bod publikování metadat. Tyto koncové body jsou potenciálně dostupné anonymním neověřeným příjemcům a před nasazením těchto koncových bodů je potřeba zajistit, aby byla veřejně zpřístupněna metadata služby. Podívejte se na ukázku vlastního zabezpečeného koncového bodu metadat pro příklad, který zabezpečuje koncový bod metadat.
Ukázka je založená na Začínáme, které implementuje smlouvu o službách ICalculator. V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná internetovou informační službou (IIS).
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Aby služba zpřístupnila metadata, ServiceMetadataBehavior musí být ve službě nakonfigurovaná. Pokud toto chování existuje, můžete publikovat metadata tak, že nakonfigurujete koncový bod tak, aby zpřístupnil IMetadataExchange kontrakt jako implementaci protokolu WS-MetadataExchange (MEX). Tento kontrakt má pro zjednodušení zkrácený název "IMetadataExchange". V této ukázce se používá mexHttpBinding, která je ekvivalentem wsHttpBinding s nastaveným režimem zabezpečení na None. V koncovém bodu se používá relativní adresa "mex", která při zpracování na základní adresu služeb vede k adrese http://localhost/servicemodelsamples/service.svc/mex koncového bodu. Následující příklad ukazuje konfiguraci chování:
<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>
Následující příklad ukazuje koncový bod 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" />
Tato ukázka nastaví HttpGetEnabled vlastnost na true, která také zveřejňuje metadata služby pomocí HTTP GET. Aby bylo možné povolit koncový bod metadat HTTP GET, musí mít služba základní adresu HTTP. Řetězec ?wsdl dotazu se používá na základní adrese služby pro přístup k metadatům. Chcete-li například zobrazit WSDL pro službu ve webovém prohlížeči, použijte adresu http://localhost/servicemodelsamples/service.svc?wsdl. Alternativně můžete toto chování použít k zveřejnění metadat přes HTTPS nastavením na HttpsGetEnabledtrue. To vyžaduje základní adresu HTTPS.
Pro přístup ke koncovému bodu MEX služby použijte nástroj ServiceModel Metadata Utility (Svcutil.exe).
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
Tím se vygeneruje klient na základě metadat služby.
Pokud chcete získat přístup k metadatům služby pomocí HTTP GET, nasměrujte prohlížeč na http://localhost/servicemodelsamples/service.svc?wsdl.
Pokud toto chování odeberete a pokusíte se otevřít službu, zobrazí se výjimka. K této chybě dochází, protože bez chování nemá koncový bod nakonfigurovaný s kontraktem IMetadataExchange žádnou implementaci.
Pokud nastavíte HttpGetEnabled na false, zobrazí se místo metadat služby stránka nápovědy CalculatorService.
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.