Megosztás a következőn keresztül:


Metaadatok közzétételi viselkedése

A metaadat-minta bemutatja, hogyan szabályozható egy szolgáltatás metaadat-közzétételi funkciója. A potenciálisan bizalmas szolgáltatás metaadatainak véletlen közzétételének megakadályozása érdekében a Windows Communication Foundation (WCF) szolgáltatások alapértelmezett konfigurációja letiltja a metaadatok közzétételét. Ez a viselkedés alapértelmezés szerint biztonságos, de azt is jelenti, hogy nem használhat metaadat-importáló eszközt (például Svcutil.exe) a szolgáltatás hívásához szükséges ügyfélkód létrehozásához, kivéve, ha a szolgáltatás metaadat-közzétételi viselkedése kifejezetten engedélyezve van a konfigurációban.

Fontos

Az egyértelműség kedvéért ez a minta bemutatja, hogyan hozható létre nem biztonságos metaadat-közzétételi végpont. Ezek a végpontok potenciálisan elérhetők névtelen, hitelesítés nélküli felhasználók számára, és az ilyen végpontok üzembe helyezése előtt ügyelni kell arra, hogy a szolgáltatás metaadatainak nyilvános közzététele megfelelő legyen. A metaadat-végpontot biztonságossá tevő minta egyéni biztonságos metaadat-végpontjának megtekintése.

A minta a szolgáltatásszerződést megvalósító ICalculator első lépéseken alapul. Ebben a mintában az ügyfél egy konzolalkalmazás (.exe), és a szolgáltatást az Internet Information Services (IIS) üzemelteti.

Feljegyzés

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

Ahhoz, hogy egy szolgáltatás metaadatokat tegyen közzé, konfigurálnia kell a ServiceMetadataBehavior szolgáltatáson. Ha ez a viselkedés jelen van, közzéteheti a metaadatokat egy végpont konfigurálásával, hogy a IMetadataExchange szerződést egy WS-MetadataExchange (MEX) protokoll implementációjaként tegye közzé. Ez a szerződés az "IMetadataExchange" rövidített konfigurációs nevét kapta. Ez a minta egy mexHttpBindingegyszerű standard kötést használ, amely egyenértékű a wsHttpBinding beállított biztonsági móddal None. A végpontban a "mex" relatív címe használatos, amely a szolgáltatások alapcíme alapján történő feloldás esetén a végpont címét http://localhost/servicemodelsamples/service.svc/mexeredményezi. Az alábbiakban a viselkedéskonfiguráció látható:

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

Az alábbiakban a MEX-végpont látható.

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

Ez a minta beállítja a HttpGetEnabled tulajdonságot true, amely a szolgáltatás metaadatait is elérhetővé teszi a HTTP GET használatával. A HTTP GET metaadat-végpont engedélyezéséhez a szolgáltatásnak HTTP-alapcímmel kell rendelkeznie. A lekérdezési sztringet ?wsdl a szolgáltatás alapcímén használja a metaadatok eléréséhez. Ha például egy webböngészőben szeretné megtekinteni a szolgáltatás WSDL-ét, akkor a címet http://localhost/servicemodelsamples/service.svc?wsdlkell használnia. Másik lehetőségként ezt a viselkedést használhatja a metaadatok HTTPS-en keresztüli elérhetővé adásával a következő truebeállítássalHttpsGetEnabled: . Ehhez HTTPS-alapcímre van szükség.

A szolgáltatás MEX-végpontjának eléréséhez használja a ServiceModel metadata segédprogramot (Svcutil.exe).

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

Ez létrehoz egy ügyfelet a szolgáltatás metaadatai alapján.

Ha HTTP GET használatával szeretné elérni a szolgáltatás metaadatait, mutasson a böngészőre http://localhost/servicemodelsamples/service.svc?wsdl.

Ha eltávolítja ezt a viselkedést, és megpróbálja megnyitni a szolgáltatást, kivételt kap. Ez a hiba azért fordul elő, mert a viselkedés nélkül a szerződéssel konfigurált végpont nem rendelkezik implementációval IMetadataExchange .

Ha be falsevan állítvaHttpGetEnabled, a Szolgáltatás metaadatai helyett a CalculatorService súgóoldala jelenik meg.

A minta beállítása, összeállítása és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.