DiscoveryClientProtocol Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 de noms pour appeler par programmation la System.Web.Services.Discovery découverte des 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 service Web XML est le processus de localisation ou de découverte d’un ou plusieurs documents connexes qui décrivent les services Web XML disponibles. C’est grâce à la découverte des services Web XML que les clients du service Web XML découvrent 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 par le biais d’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 des 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 Web Services Discovery Tool (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 |
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) |