Partager via


<serviceMetadata>

Spécifie la publication des métadonnées de service et les informations associées.

<Configuration>
   <system.serviceModel>
     <Comportements>
       <serviceBehaviors>
         <comportement>
           <serviceMetadata>

Syntaxe

<serviceMetadata externalMetadataLocation="String"
                 httpGetBinding="String"
                 httpGetBindingConfiguration="String"
                 httpGetEnabled="Boolean"
                 httpGetUrl="String"
                 httpsGetBinding="String"
                 httpsGetBindingConfiguration="String"
                 httpsGetEnabled="Boolean"
                 httpsGetUrl="String"
                 policyVersion="Policy12/Policy15" />

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributes

Caractéristique Descriptif
externalMetadataLocation Uri qui contient l’emplacement d’un fichier WSDL, qui est retourné à l’utilisateur en réponse aux requêtes WSDL et MEX au lieu du WSDL généré automatiquement. Lorsque cet attribut n’est pas défini, le WSDL par défaut est retourné. La valeur par défaut est une chaîne vide.
httpGetBinding Chaîne qui spécifie le type de la liaison qui sera utilisée pour la récupération des métadonnées via HTTP GET. Ce paramètre est facultatif. S’il n’est pas spécifié, les liaisons par défaut sont utilisées.

Seules les liaisons avec des éléments de liaison internes qui prennent en charge IReplyChannel seront prises en charge. En outre, la MessageVersion propriété de la liaison doit être None.
httpGetBindingConfiguration Chaîne qui définit le nom de la liaison spécifiée dans l’attribut httpGetBinding , qui fait référence aux informations de configuration supplémentaires de cette liaison. Le même nom doit être défini dans la <bindings> section.
httpGetEnabled Valeur booléenne qui spécifie s’il faut publier des métadonnées de service pour la récupération à l’aide d’une requête HTTP/Get. La valeur par défaut est false.

Si l’attribut httpGetUrl n’est pas spécifié, l’adresse à laquelle les métadonnées sont publiées est l’adresse du service plus un « ?wsdl ». Par exemple, si l’adresse du service est http://localhost:8080/CalculatorService, l’adresse de métadonnées HTTP/Get est http://localhost:8080/CalculatorService?wsdl.

Si cette propriété est false, ou si l’adresse du service n’est pas basée sur HTTP ou HTTPS, « ?wsdl » est ignorée.
httpGetUrl Uri qui spécifie l’adresse à laquelle les métadonnées sont publiées pour la récupération à l’aide d’une requête HTTP/Get. Si un URI relatif est spécifié, il sera traité comme relatif à l’adresse de base du service.
httpsGetBinding Chaîne qui spécifie le type de la liaison qui sera utilisée pour la récupération des métadonnées via HTTPS GET. Ce paramètre est facultatif. S’il n’est pas spécifié, les liaisons par défaut sont utilisées.

Seules les liaisons avec des éléments de liaison internes qui prennent en charge IReplyChannel seront prises en charge. En outre, la MessageVersion propriété de la liaison doit être None.
httpsGetBindingConfiguration Chaîne qui définit le nom de la liaison spécifiée dans l’attribut httpsGetBinding , qui fait référence aux informations de configuration supplémentaires de cette liaison. Le même nom doit être défini dans la <bindings> section.
httpsGetEnabled Valeur booléenne qui spécifie s’il faut publier des métadonnées de service pour la récupération à l’aide d’une requête HTTPS/Get. La valeur par défaut est false.

Si l’attribut httpsGetUrl n’est pas spécifié, l’adresse à laquelle les métadonnées sont publiées est l’adresse du service plus un « ?wsdl ». Par exemple, si l’adresse du service est https://localhost:8080/CalculatorService, l’adresse de métadonnées HTTP/Get est https://localhost:8080/CalculatorService?wsdl.

Si cette propriété est false, ou si l’adresse du service n’est pas basée sur HTTP ou HTTPS, « ?wsdl » est ignorée.
httpsGetUrl Uri qui spécifie l’adresse à laquelle les métadonnées sont publiées pour la récupération à l’aide d’une requête HTTPS/Get.
policyVersion Chaîne qui spécifie la version de la spécification WS-Policy utilisée. Cet attribut est de type PolicyVersion.

Éléments enfants

Aucun

Éléments parents

Élément Descriptif
<comportement> Spécifie un élément de comportement.

Remarques

Cet élément de configuration vous permet de contrôler les fonctionnalités de publication de métadonnées d’un service. Pour empêcher la divulgation involontaire de métadonnées de service potentiellement sensibles, la configuration par défaut pour les services Windows Communication Foundation (WCF) désactive la publication de métadonnées. Ce comportement est sécurisé par défaut, mais signifie également que vous ne pouvez pas utiliser un outil d’importation de métadonnées (tel que Svcutil.exe) pour générer le code client requis pour appeler le service, sauf si le comportement de publication des métadonnées du service est explicitement activé dans la configuration. À l’aide de cet élément de configuration, vous pouvez activer ce comportement de publication pour votre service.

Pour obtenir un exemple détaillé de configuration de ce comportement, consultez Le comportement de publication des métadonnées.

Les attributs et httpGetBinding facultatifs httpsGetBinding vous permettent de configurer les liaisons utilisées pour la récupération des métadonnées via HTTP GET (ou HTTPS GET). S’ils ne sont pas spécifiés, les liaisons par défaut (HttpTransportBindingElementdans le cas de HTTP et HttpsTransportBindingElement, dans le cas de HTTPS) sont utilisées pour la récupération des métadonnées selon les besoins. Notez que vous ne pouvez pas utiliser ces attributs avec les liaisons WCF intégrées. Seules les liaisons avec des éléments de liaison internes qui prennent en charge IReplyChannel seront prises en charge. En outre, la MessageVersion propriété de la liaison doit être None.

Pour éviter l'exposition d'un service aux utilisateurs malveillants, il est possible de sécuriser le transfert à l'aide du mécanisme HTTPS (SSL over HTTP). Pour ce faire, vous devez d'abord lier un certificat X.509 approprié à un port spécifique sur l'ordinateur qui héberge le service. (Pour plus d’informations, consultez Utilisation des certificats.) Ensuite, ajoutez cet élément à la configuration du service et définissez l’attribut httpsGetEnabled sur true. Enfin, affectez l'URL du point de terminaison des métadonnées du service à l'attribut httpsGetUrl, comme indiqué dans l'exemple suivant.

<behaviors>
  <serviceBehaviors>
    <behavior name="NewBehavior">
      <serviceMetadata httpsGetEnabled="true"
                       httpsGetUrl="https://myComputerName/myEndpoint" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Example

L’exemple suivant configure un service pour exposer les métadonnées à l’aide de l’élément <serviceMetadata> . Il configure également un point de terminaison pour exposer le IMetadataExchange contrat en tant qu’implémentation d’un protocole WS-MetadataExchange (MEX). L’exemple utilise la mexHttpBindingliaison standard pratique équivalente au wsHttpBinding mode de sécurité défini Nonesur . Une adresse relative de « mex » est utilisée dans le point de terminaison, qui, lorsqu’elle est résolue par rapport à l’adresse de base des services, génère une adresse de point de terminaison de 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>

Voir aussi