Partager via


Activation de la découverte pour un service Web XML

La découverte d'un service Web XML désigne le processus de localisation et d'interrogation des descriptions de service Web XML, étape préliminaire à l'accès au service. Grâce au processus de découverte, les clients peuvent apprendre au moment du design qu'un service Web XML existe, connaître ses capacités et apprendre comment interagir correctement avec lui.

La découverte par programme peut être activée lorsqu'un service Web XML publie un fichier .disco, document XML qui peut contenir des liens vers d'autres documents de découverte, schémas XSD et descriptions de service. De même, les services Web XML créés à l'aide d'ASP.NET ont automatiquement la capacité de fournir un document de découverte généré. Ce document est automatiquement généré pour un service Web XML lorsqu'une URL dont la chaîne de requête indique ?DISCO, est utilisée pour y accéder. Par exemple, si l'URL d'un service Web XML est www.contoso.com/getquote.asmx, un document de découverte est alors automatiquement généré avec l'URL www.contoso.com/getquote.asmx?DISCO.

Pour activer la découverte pour un service Web XML

  1. Créez un document XML avec votre éditeur favori en ajoutant la balise <?xml version="1.0" ?> à la première ligne.

  2. Dans le document XML, ajoutez un élément <discovery> tel que

    <disco:discovery xmlns:disco="https://schemas.xmlsoap.org/disco/"></disco:discovery>
    
  3. Dans l'élément <discovery>, ajoutez les références aux descriptions de service, schémas XSD et autres documents de découverte.

    Vous pouvez ajouter autant de références que vous souhaitez exposer publiquement. Les références de description de service sont spécifiées dans un document de découverte en ajoutant un élément <contractRef> avec l'espace de noms XML https://schemas.xmlsoap.org/disco/scl/. De même, les références à d'autres documents de découverte et schémas XSD sont spécifiées en ajoutant respectivement les éléments XML <discoveryRef> et <schemaRef>. Pour les références aux schémas XSD, l'espace de noms XML https://schemas.xmlsoap.org/disco/schema doit être spécifié. Pour les trois types de documents référencés, vous spécifiez l'emplacement du document en utilisant l'attribut ref. L'exemple de code suivant a des références à un document de découverte, une description de service et un schéma XSD.

    <?xml version="1.0"?>
    <discovery xmlns="https://schemas.xmlsoap.org/disco/">
    <discoveryRef ref="/Folder/Default.disco"/>
    <contractRef ref="http://MyWebServer/UserName.asmx?WSDL"
                 docRef="Service.htm"
                 xmlns="https://schemas.xmlsoap.org/disco/scl/"/>
    <schemaRef ref="Schema.xsd"
               xmlns="https://schemas.xmlsoap.org/disco/schema/"/>
    </discovery>
    

    Les références peuvent être relatives au répertoire où le document de découverte réside, comme cela est indiqué dans l'élément discoveryRef, ou à un identificateur URI, comme cela est indiqué dans l'élément contractRef.

  4. Déployez le document de découverte sur un serveur Web en le copiant vers un répertoire virtuel du serveur.

  5. Si vous souhaitez éventuellement autoriser les consommateurs potentiels à naviguer vers une URL en spécifiant une application IIS, sans avoir à spécifier un document, vous pouvez ajouter un lien vers la page par défaut pour l'application IIS. Ceci a pour avantage que les consommateurs potentiels n'ont pas besoin de connaître le nom des documents de découverte. Les utilisateurs peuvent alors fournir des URL telles que les suivantes pendant le processus de découverte :

    http://MyWebServer/MyWebApplication
    

    Si la page par défaut pour l'application Web est une page HTML :
    Ajoutez un lien au document de découverte dans la balise <head> de la page Web par défaut pour le serveur Web. Par exemple, si vous nommez votre document de découverte MyWebService.disco et le placez dans le même répertoire que la page par défaut, vous devez placer la balise suivante dans la page Web par défaut :

    <HEAD>
    <link type='text/xml' rel='alternate' href='MyWebService.disco'/>
    </HEAD>
    

    Si la page par défaut pour l'application Web est un document XML :

    Ajoutez un lien vers le document de découverte dans la balise <head> de la page Web par défaut pour le serveur Web. Par exemple, si vous nommez votre document de découverte MyWebService.disco et le placez dans le même répertoire que la page par défaut, vous devez placer ce qui suit au début de la page par défaut :

    <?xml-stylesheet type="text/xml" alternate="yes" href="MyWebService.disco" ?>
    
  6. Si vous utilisez Visual Studio .NET, vous pouvez également activer la découverte dynamique pour permettre aux applications clientes de service Web XML de découvrir les services Web XML sur un serveur Web sans créer de document de découverte. Lorsque la découverte dynamique est activée, les applications clientes spécifient une URL faisant référence à un fichier doté d'une section .vsdisco, tel que le fichier www.contoso.com/default.vsdisco de la boîte de dialogue Ajouter une référence Web, au lieu d'un document de découverte spécifique.

    Pour activer la découverte dynamique pour un serveur Web, modifiez machine.config en ajoutant l'élément <add> suivant. Ne tenez pas compte des sauts de ligne dans l'exemple suivant, car l'attribut type doit figurer sur une seule ligne.

    <configuration>
      <system.web>
         <httpHandlers>
           <add verb="*" path="*.vsdisco"
               type="System.Web.Services.Discovery.DiscoveryRequestHandler,
                     System.Web.Services, Version=1.0.3300.0,
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
               validate="false"/>
         </httpHandlers>
       </system.web>
    </configuration>
    

    **Remarque   **Lorsque la découverte dynamique est activée, tous les services Web XML et les documents de découverte qui existent sur le serveur Web sous l'URL demandée peuvent être découverts. Vous devez donc être prudent lorsque vous activez la découverte dynamique, car vous risquez d'exposer involontairement des données sensibles si le serveur Web ne se trouve pas sur un réseau utilisant un pare-feu et d'autres fonctionnalités de sécurité.

Voir aussi

Déploiement de services Web XML | Options de configuration pour les services Web XML créés à l'aide d'ASP.NET | Création de services Web XML à l'aide d'ASP.NET