DiscoveryClientProtocol Classe

Définition

Fournit la prise en charge pour appeler la découverte de services Web XML par programme.

public ref class DiscoveryClientProtocol : System::Web::Services::Protocols::HttpWebClientProtocol
public class DiscoveryClientProtocol : System.Web.Services.Protocols.HttpWebClientProtocol
type DiscoveryClientProtocol = class
    inherit HttpWebClientProtocol
Public Class DiscoveryClientProtocol
Inherits HttpWebClientProtocol
Héritage

Exemples

L’exemple de code suivant est un formulaire Web qui montre comment utiliser la DiscoveryClientProtocol classe avec les autres classes de l’espace System.Web.Services.Discovery de noms pour appeler par programmation la découverte de services Web XML. L’exemple de code illustre l’utilisation des Discoverméthodes , DiscoverDiscoverAny, ResolveAll, ResolveOneLevel, ReadAll et WriteAll .

Important

Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages web ASP.NET vérifient que l’entrée d’utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des attaques de script.

<%@ Page Language="C#" Debug="true" %>

<%@ Import Namespace="System.Web.Services.Discovery" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Data" %>

<HTML>
<HEAD>
   <SCRIPT RUNAT="SERVER">
   protected void Discover_Click(object Source, EventArgs e)
   {
    // Specify the URL to discover.
    string sourceUrl = DiscoURL.Text;
    // Specify the URL to save discovery results to or read from.
    string outputDirectory = DiscoDir.Text;

        DiscoveryClientProtocol client = new DiscoveryClientProtocol();
    // Use default credentials to access the URL being discovered.
        client.Credentials = CredentialCache.DefaultCredentials;

        try {
          DiscoveryDocument doc;
      // Check to see if whether the user wanted to read in existing discovery results.
      if (DiscoverMode.Value == "ReadAll") 
          {
         DiscoveryClientResultCollection results = client.ReadAll(Path.Combine(DiscoDir.Text,"results.discomap"));
            SaveMode.Value = "NoSave";						
      }
      else 
          {
        // Check to see if whether the user wants the capability to discover any kind of discoverable document.
        if (DiscoverMode.Value == "DiscoverAny") 
            {
          doc = client.DiscoverAny(sourceUrl);
            }
        else
        // Discover only discovery documents, which might contain references to other types of discoverable documents.
            {
          doc = client.Discover(sourceUrl);
        }
        // Check to see whether the user wants to resolve all possible references from the supplied URL.
        if (ResolveMode.Value == "ResolveAll")
           client.ResolveAll();
        else 
            {
        // Check to see whether the user wants to resolve references nested more than one level deep.
            if (ResolveMode.Value == "ResolveOneLevel")  
               client.ResolveOneLevel();
            else
           Status.Text = String.Empty;
            }
          }
        }
        catch ( Exception e2) 
        {
          DiscoveryResultsGrid.Columns.Clear();
          Status.Text = e2.Message;
        }
    // If documents were discovered, display the results in a data grid.
        if (client.Documents.Count > 0)
        PopulateGrid(client);

    // If the user also asked to have the results saved to the Web server, do so.
        if (SaveMode.Value == "Save") 
        {
          DiscoveryClientResultCollection results = client.WriteAll(outputDirectory, "results.discomap");
      Status.Text = "The following file holds the links to each of the discovery results: <b>" + 
                                    Path.Combine(outputDirectory,"results.discomap") + "</b>";
        }
                             
     
      }

      protected void PopulateGrid(DiscoveryClientProtocol client) 
      {
         DataTable dt = new DataTable();
         DataRow dr;
 
         dt.Columns.Add(new DataColumn("Discovery Document"));
         dt.Columns.Add(new DataColumn("References"));
         dt.Columns.Add(new DataColumn("Type"));


         foreach (DictionaryEntry entry in client.Documents) 
         {
                dr = dt.NewRow();
        dr[0] = (string) entry.Key;
        dr[2] = entry.Value.GetType();
        dt.Rows.Add(dr);
        if (entry.Value is DiscoveryDocument)
        {
          DiscoveryDocument discoDoc = (DiscoveryDocument) entry.Value;
          foreach (DiscoveryReference discoref in discoDoc.References)
          {
            dr = dt.NewRow();
            dr[1] = discoref.Url;
            dr[2] = discoref.GetType();
            dt.Rows.Add(dr);
           }
        }
        
         }
        DataView dv = new DataView(dt);
    DiscoveryResultsGrid.DataSource = (ICollection) dv;
    DiscoveryResultsGrid.DataBind();
      
    }
  </SCRIPT>
  </HEAD> 
  <BODY>
    <H3> <p align="center"> Discovery Class Sample </p> </H3>
        <FORM RUNAT="SERVER">
    <hr>	
     Enter the URL to discover:
        <asp:textbox id=DiscoURL Columns=60 runat="SERVER" /><p>

       Discovery Mode:
       <select id="DiscoverMode" size=1 runat="SERVER">
         <option Value="DiscoverAny">Discover any of the discovery types</option>
             <option Value="Discover">Discover just discovery documents</option>
             <option Value="ReadAll">Read in saved discovery results</option>
    </select> <p>

       Resolve References Mode:
       <select id="ResolveMode" size=1 runat="SERVER">
             <option Value="ResolveAll">Resolve all references</option>
             <option Value="ResolveOneLevel">Resolve references only in discovery documents within the supplied URL</option>
             <option Value="ResolveNone">Do not resolve references</option>
    </select> <p>
        
       Save Results Mode:
    <select id="SaveMode" size=1 runat="SERVER">
         <option Value="NoSave">Do not save any of the discovery documents found locally</option>
             <option Value="Save">Save the discovery documents found locally</option>
        </select> <p>
        Enter the directory to Read/Save the Discovery results:
        <asp:textbox id=DiscoDir runat="SERVER" /> <p>

    <p align="center"> <asp:Button id=Discover Text="Discover!" onClick="Discover_Click" runat="SERVER"/> </p><p>

        <hr>
        <asp:label id="Status" runat="SERVER" /><p>
     <asp:DataGrid id="DiscoveryResultsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="DarkBlue" ForeColor="White">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="LightYellow">
         </AlternatingItemStyle>

     </asp:DataGrid>
        </FORM>
  </BODY>
<%@ Page Language="VB" Debug="true" %>

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Web.Services.Discovery" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Data" %>

<HTML>
<HEAD>
   <SCRIPT RUNAT="SERVER">
   Public Sub Discover_Click(Source As Object, e as EventArgs )
      ' Specify the URL to discover.
      Dim sourceUrl as String = DiscoURL.Text
      ' Specify the URL to save discovery results to or read from.
      Dim outputDirectory As String = DiscoDir.Text

      Dim client as DiscoveryClientProtocol = new DiscoveryClientProtocol()
      ' Use default credentials to access the URL being discovered.
      client.Credentials = CredentialCache.DefaultCredentials
      Try 
        Dim doc As DiscoveryDocument
        ' Check to see whether the user wanted to read in existing discovery results.
    If (DiscoverMode.Value = "ReadAll") Then
       Dim results As DiscoveryClientResultCollection 
           results = client.ReadAll(Path.Combine(DiscoDir.Text,"results.discomap"))
       SaveMode.Value = "NoSave"						
    Else
       ' Check to see whether the user user wants the capability to discover any kind of discoverable document.
           If (DiscoverMode.Value = "DiscoverAny") Then
         doc = client.DiscoverAny(sourceUrl)
           Else
         ' Discover only discovery documents, which might contain references to other types of discoverable documents. 
         doc = client.Discover(sourceUrl)
       End If
           
           ' Check to see whether the user wants to resolve all possible references from the supplied URL.
       If (ResolveMode.Value = "ResolveAll") Then
          client.ResolveAll()
           ' Check to see whether the user wants to resolve references nested more than one level deep.
       ElseIf (ResolveMode.Value = "ResolveOneLevel")  Then
              client.ResolveOneLevel()
       Else
          Status.Text = String.Empty
           End If
    End If
            
       Catch e2 As Exception
          DiscoveryResultsGrid.Columns.Clear()
          Status.Text = e2.Message
       End Try

       ' If documents were discovered, display the results in a data grid.
       If (client.Documents.Count > 0) Then
            'populate our Grid with the discovery results.
        PopulateGrid(client)
       End If

       ' If the user also asked to have the results saved to the Web server, do so.	    
       If (SaveMode.Value = "Save") Then
      Dim results As DiscoveryClientResultCollection 
          results = client.WriteAll(outputDirectory, "results.discomap")
          Status.Text = "The following file holds the links to each of the discovery results: <b>" + _ 
                                     Path.Combine(outputDirectory,"results.discomap") + "</b>"
       End If                             

      End Sub
      Public Sub PopulateGrid(client As DiscoveryClientProtocol) 
         Dim dt As DataTable = new DataTable()
         Dim dr AS DataRow 
 
         dt.Columns.Add(new DataColumn("Discovery Document") )
         dt.Columns.Add(new DataColumn("References") )
         dt.Columns.Add(new DataColumn("Type") )

     Dim entry As DictionaryEntry
         For Each entry in client.Documents
            dr = dt.NewRow()
        dr(0) = entry.Key
        dr(2) = entry.Value.GetType()
        dt.Rows.Add(dr)
        If TypeOf entry.Value Is DiscoveryDocument Then
           Dim discoDoc As DiscoveryDocument = entry.Value
           Dim discoref As DiscoveryReference
           For Each discoref in discoDoc.References
          dr = dt.NewRow()
          dr(1) = discoref.Url
          dr(2) = discoref.GetType()
          dt.Rows.Add(dr)
           Next
        End If   
    Next 	
         
        Dim dv As DataView = new DataView(dt)
    DiscoveryResultsGrid.DataSource = dv
    DiscoveryResultsGrid.DataBind()
     End Sub
  </SCRIPT>
  </HEAD> 
  <BODY>
    <H3> <p align="center"> Discovery Class Sample </p> </H3>
        <FORM RUNAT="SERVER">

    <hr>	
        Enter the URL to discover:
        <asp:textbox id=DiscoURL Columns=60 runat="SERVER" /><p>

       Discovery Mode:
       <select id="DiscoverMode" size=1 runat="SERVER">
         <option Value="DiscoverAny">Discover any of the discovery types</option>
             <option Value="Discover">Discover just discovery documents</option>
             <option Value="ReadAll">Read in saved discovery results</option>
    </select> <p>

       Resolve References Mode:
       <select id="ResolveMode" size=1 runat="SERVER">
          <option Value="ResolveAll">Resolve all references</option>
             <option Value="ResolveOneLevel">Resolve references only in discovery documents within the supplied URL</option>
             <option Value="ResolveNone">Do not resolve references</option>
    </select> <p>
        
       Save Results Mode:
    <select id="SaveMode" size=1 runat="SERVER">
          <option Value="NoSave">Do not save any of the discovery documents found locally</option>
             <option Value="Save">Save the discovery documents found locally</option>
        </select> <p>
        Enter the directory to Read/Save the Discovery results:
        <asp:textbox id=DiscoDir runat="SERVER" /> <p>


    <p align="center"> <asp:Button id=Discover Text="Discover!" onClick="Discover_Click" runat="SERVER"/> </p><p>

        <hr>
        <asp:label id="Status" runat="SERVER" /><p>
     <asp:DataGrid id="DiscoveryResultsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="DarkBlue" ForeColor="White">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="LightYellow">
         </AlternatingItemStyle>

     </asp:DataGrid>
        </FORM>
  </BODY>

Remarques

La découverte de services Web XML est le processus de localisation ou de découverte d’un ou de plusieurs documents connexes qui décrivent les services Web XML disponibles. C’est par le biais de la découverte des services Web XML que les clients du service Web XML apprennent les services Web XML disponibles à une URL donnée et comment les utiliser. La découverte des services Web XML fonctionne à partir du principe que vous avez déjà obtenu l’URL d’un document de découverte, éventuellement via un service d’annuaire. Toutefois, vous n’avez pas les détails sur les services Web XML proposés. Grâce à la découverte des services Web XML, vous pouvez découvrir les détails sur les services Web XML répertoriés dans un DiscoveryDocument à une URL spécifique.

Un client de service Web XML démarre la Discover découverte des services Web XML en fournissant une URL aux méthodes ou DiscoverAny . En règle générale, cette URL fait référence à un document de découverte, qui à son tour fait référence aux documents qui décrivent un ou plusieurs services Web XML, qui sont ajoutés à la References propriété. À ce stade, seul ce document est téléchargé et vérifié pour pointer vers des informations valides sur les services Web XML. Toutefois, les références contenues dans ce document ne sont pas vérifiées à ce stade. Au lieu de cela, ils sont ajoutés à la References propriété . Pour vérifier que les références sont valides, appelez les ResolveAll méthodes ou ResolveOneLevel , qui ajoutent des documents référencés valides à la Documents propriété . Enfin, si un client souhaite enregistrer les résultats de la découverte sur le disque, appelez la WriteAll méthode .

Si l’accès par programmation à la découverte des services Web XML n’est pas nécessaire, le Kit de développement logiciel (SDK) Windows fournit l’outil de découverte des services Web (Disco.exe) pour découvrir les services Web XML dans une invite de commandes. Pour plus d’informations, consultez Outil de découverte des services web (Disco.exe).

Constructeurs

DiscoveryClientProtocol()

Initialise une nouvelle instance de la classe DiscoveryClientProtocol.

Propriétés

AdditionalInformation

Obtient des informations en plus des références trouvées dans le document de découverte.

AllowAutoRedirect

Obtient ou définit le paramètre indiquant si le client suit automatiquement ou non les redirections du serveur.

(Hérité de HttpWebClientProtocol)
CanRaiseEvents

Obtient une valeur qui indique si le composant peut déclencher un événement.

(Hérité de Component)
ClientCertificates

Obtient la collection de certificats clients.

(Hérité de HttpWebClientProtocol)
ConnectionGroupName

Obtient ou définit le nom du groupe de connexions pour la requête.

(Hérité de WebClientProtocol)
Container

Obtient le IContainer qui contient la Component.

(Hérité de Component)
CookieContainer

Obtient ou définit la collection de cookies.

(Hérité de HttpWebClientProtocol)
Credentials

Obtient ou définit les informations d'identification du client de service Web XML.

(Hérité de WebClientProtocol)
DesignMode

Obtient une valeur qui indique si Component est actuellement en mode design.

(Hérité de Component)
Documents

Obtient une collection de documents de découverte.

EnableDecompression

Obtient ou définit une valeur qui indique si la décompression est activée pour ce HttpWebClientProtocol.

(Hérité de HttpWebClientProtocol)
Errors

Obtient une collection d'exceptions qui se sont produites au cours de l'appel à la méthode à partir de cette classe.

Events

Obtient la liste des gestionnaires d'événements attachés à ce Component.

(Hérité de Component)
PreAuthenticate

Obtient ou définit si la pré-authentification est activée.

(Hérité de WebClientProtocol)
Proxy

Obtient ou définit des informations relatives au proxy et permettant de faire passer une demande de service Web XML via un pare-feu.

(Hérité de HttpWebClientProtocol)
References

Collection de références trouvées dans les documents de découverte résolus.

RequestEncoding

Encoding utilisé pour formuler la demande du client au service Web XML.

(Hérité de WebClientProtocol)
Site

Obtient ou définit le ISite de Component.

(Hérité de Component)
Timeout

Indique la durée (en millisecondes) pendant laquelle un client de service Web XML attend la réponse à une requête de service Web XML synchrone.

(Hérité de WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

Obtient ou définit une valeur indiquant si le partage de connexion est activé lorsque le client utilise l'authentification NTLM pour se connecter au serveur Web hébergeant le service Web XML.

(Hérité de HttpWebClientProtocol)
Url

Obtient ou définit l'URL de base du service Web XML demandé par le client.

(Hérité de WebClientProtocol)
UseDefaultCredentials

Obtient ou définit une valeur indiquant si la propriété Credentials doit avoir la valeur de la propriété DefaultCredentials.

(Hérité de WebClientProtocol)
UserAgent

Obtient ou définit la valeur de l'en-tête d'agent utilisateur (user agent) accompagnant chaque demande.

(Hérité de HttpWebClientProtocol)

Méthodes

Abort()

Annule une demande d'une méthode de service Web XML.

(Hérité de WebClientProtocol)
CancelAsync(Object)

Annule un appel asynchrone à une méthode de service Web XML, sauf si l'appel est déjà terminé.

(Hérité de HttpWebClientProtocol)
CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Discover(String)

Détecte l'URL fournie afin de déterminer si c'est un document de découverte.

DiscoverAny(String)

Détecte l'URL fournie afin de déterminer si c'est un document de découverte, une description de service ou un schéma XSD (XML Schema Definition).

Dispose()

Libère toutes les ressources utilisées par Component.

(Hérité de Component)
Dispose(Boolean)

Libère les ressources non managées utilisées par Component et libère éventuellement les ressources managées.

(Hérité de Component)
Download(String)

Télécharge le document de découverte à l'URL fournie dans l'objet Stream.

Download(String, String)

Télécharge le document de découverte à l'URL fournie dans l'objet Stream, affectant au paramètre contentType le codage MIME du document de découverte.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetService(Type)

Retourne un objet qui représente un service fourni par Component ou par son Container.

(Hérité de Component)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetWebRequest(Uri)

Crée WebRequest pour l'identificateur URI spécifié

(Hérité de HttpWebClientProtocol)
GetWebResponse(WebRequest)

Retourne une réponse à partir d'une demande synchrone auprès d'une méthode de service Web XML.

(Hérité de HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Retourne une réponse à partir d'une demande asynchrone auprès d'une méthode de service Web XML.

(Hérité de HttpWebClientProtocol)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
LoadExternals()
Obsolète.

Demande à l'objet DiscoveryClientProtocol de charger toutes les références externes.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
ReadAll(String)

Lit un fichier contenant une table de hachage de documents de découverte enregistrés remplissant les propriétés Documents et References de documents de découverte, de schémas XSD (XML Schema Definition) et de descriptions de services référencées dans le fichier.

ResolveAll()

Résout toutes les références aux documents de découverte, aux schémas XSD (XML Schema Definition) et aux descriptions de service dans la propriété References, ainsi que les références trouvées dans des documents de découverte référencés.

ResolveOneLevel()

Résout toutes les références aux documents de découverte, aux schémas XSD (XML Schema Definition) et aux descriptions de service dans References, ainsi que toutes les références trouvées dans ces documents de découverte.

ToString()

Retourne un String contenant le nom du Component, s’il en existe un. Cette méthode ne doit pas être remplacée.

(Hérité de Component)
WriteAll(String, String)

Écrit tous les documents de découverte, les schémas XSD (XML Schema Definition) et les descriptions de service dans la propriété Documents dans le répertoire fourni et crée un fichier dans ce répertoire.

Événements

Disposed

Se produit lorsque le composant est supprimé par un appel à la méthode Dispose().

(Hérité de Component)

S’applique à

Voir aussi