<serviceMetadata>
Spécifie la publication de métadonnées de service et des informations associées.
Hiérarchie de schéma
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior> de <serviceBehaviors>
<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.
Attributs
Attribut | Description |
---|---|
externalMetadataLocation |
URI contenant l'emplacement d'un fichier WSDL renvoyé à l'utilisateur en réponse aux demandes 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 renvoyé. 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 de métadonnées via HTTP GET. Ce paramètre est facultatif. En l'absence de spécification, les liaisons par défaut seront utilisées. Seules les liaisons avec des éléments de liaison internes qui prennent en charge T:System.ServiceModel.Channels.IReplyChannel seront prises en charge. En outre, la propriété P:System.ServiceModel.Channels.MessageVersion de la liaison doit être P:System.ServiceModel.Channels.MessageVersion.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 section <bindings>. |
httpGetEnabled |
Valeur booléenne indiquant si les métadonnées de service correspondant à la récupération doivent être publiées à l'aide d'une demande HTTP/Get. La valeur par défaut est false. Si l'attribut httpGetUrl n'est pas spécifié, l'adresse utilisée pour publier les métadonnées est celle du service à laquelle est ajouté le suffixe « ? wsdl ». Par exemple, si l'adresse du service est "https://localhost:8080/CalculatorService", l'adresse des métadonnées HTTP/Get est "https://localhost:8080/CalculatorService?wsdl". Si cette propriété a la valeur false ou si l'adresse du service n'est pas basée sur le protocole HTTP ou HTTPS, le suffixe « ? wsdl » n'est pas pris en compte. |
httpGetUrl |
URI indiquant l'adresse utilisée pour publier les métadonnées correspondant à la récupération à l'aide d'une demande HTTP/Get. |
httpsGetBinding |
Chaîne qui spécifie le type de la liaison qui sera utilisée pour la récupération de métadonnées via HTTPS GET. Ce paramètre est facultatif. En l'absence de spécification, les liaisons par défaut seront utilisées. Seules les liaisons avec des éléments de liaison internes qui prennent en charge T:System.ServiceModel.Channels.IReplyChannel seront prises en charge. En outre, la propriété P:System.ServiceModel.Channels.MessageVersion de la liaison doit être P:System.ServiceModel.Channels.MessageVersion.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 section <bindings>. |
httpsGetEnabled |
Valeur booléenne indiquant si les métadonnées de service correspondant à la récupération doivent être publiées à l'aide d'une demande HTTPS/Get. La valeur par défaut est false. Si l'attribut httpsGetUrl n'est pas spécifié, l'adresse utilisée pour publier les métadonnées est celle du service à laquelle est ajouté le suffixe « ? wsdl ». Par exemple, si l'adresse du service est "https://localhost:8080/CalculatorService", l'adresse des métadonnées HTTP/Get est "https://localhost:8080/CalculatorService?wsdl". Si cette propriété a la valeur false ou si l'adresse du service n'est pas basée sur le protocole HTTP ou HTTPS, le suffixe « ? wsdl » n'est pas pris en compte. |
httpsGetUrl |
URI indiquant l'adresse utilisée pour publier les métadonnées afin d'effectuer une récupération à l'aide d'une demande HTTPS/Get. |
policyVersion |
Chaîne indiquant 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 | Description |
---|---|
Spécifie un élément de comportement. |
Notes
Cet élément de configuration permet de contrôler les métadonnées qui publient les fonctionnalités d'un service. Pour empêcher la divulgation involontaire de métadonnées de service potentiellement sensibles, la publication de métadonnées est désactivée par défaut dans la configuration des services Windows Communication Foundation (WCF). Ce comportement est sécurisé par défaut, mais il signifie également que vous ne pouvez pas utiliser d'outil d'importation de métadonnées (tel que Svcutil.exe) pour générer le code client requis pour appeler le service, à moins que le comportement de publication des métadonnées du service soit activé explicitement dans la configuration. À l'aide de cet élément de configuration, vous pouvez activer ce comportement de publication pour votre service.
Pour consulter un exemple de code détaillé configurant ce comportement, consultez Metadata Publishing Behavior.
Les attributs facultatifs httpGetBinding et httpsGetBinding vous permettent de configurer les liaisons utilisées pour la récupération de métadonnées via HTTP GET (ou HTTPS GET). S'ils ne sont pas spécifiés, les liaisons par défaut (HttpTransportBindingElement dans le cas de HTTP et HttpsTransportBindingElement dans le cas de HTTPS) sont utilisées pour la récupération des métadonnées. Notez que vous ne pouvez pas utiliser ces attributs avec les liaisons WCF intégrées. La prise en charge n'est assurée que pour les liaisons comportant des éléments de liaison internes qui prennent en charge IReplyChannel. En outre, la propriété MessageVersion 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 Working with Certificates.) Ensuite, ajoutez cet élément à la configuration du service et affectez la valeur true à l'attribut httpsGetEnabled. 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>
Exemple
L'exemple suivant illustre la configuration d'un service pour exposer des métadonnées à l'aide de l'élément <serviceMetadata>. Il configure également un point de terminaison afin d'exposer le contrat IMetadataExchange comme implémentation d'un protocole WS-MetadataExchange (MEX). L'exemple utilise mexHttpBinding, qui est une liaison standard équivalente à wsHttpBinding dans laquelle le mode de sécurité a la valeur None. Une adresse relative de « mex » est utilisée dans le point de terminaison qui, s'il est résolu sur l'adresse des services de base a pour résultat l'adresse de point de terminaison https://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: https://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at https://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. https://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Voir aussi
Référence
ServiceMetadataPublishingElement
ServiceMetadataBehavior