Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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>