DiscoveryClientProtocol Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bietet Unterstützung für das programmgesteuerte Aufrufen des XML Web Services Discovery-Tools.
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
- Vererbung
Beispiele
Das folgende Codebeispiel ist ein Webformular, das veranschaulicht, wie die DiscoveryClientProtocol -Klasse zusammen mit den anderen Klassen im Namespace zum programmgesteuerten Aufrufen der System.Web.Services.Discovery XML-Webdienstermittlung verwendet wird. Im Codebeispiel wird die Verwendung der DiscoverMethoden , DiscoverAny, ResolveAllDiscover, , ResolveOneLevelund ReadAllWriteAll veranschaulicht.
Wichtig
Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
<%@ 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>
Hinweise
Die XML-Webdienstermittlung ist der Prozess zum Suchen oder Ermitteln eines oder mehrerer verwandter Dokumente, die verfügbare XML-Webdienste beschreiben. Xml-Webdienstclients lernen über die ERMITTLUNG von XML-Webdiensten die verfügbaren XML-Webdienste unter einer bestimmten URL und deren Verwendung kennen. Die XML-Webdienstermittlung funktioniert von der Prämisse, dass Sie die URL bereits zu einem Ermittlungsdokument abgerufen haben, möglicherweise über einen Verzeichnisdienst. Sie haben jedoch keine Details zu den angebotenen XML-Webdiensten. Über die XML-Webdienstermittlung können Sie die Details zu den XML-Webdiensten ermitteln, die in einer DiscoveryDocument unter einer bestimmten URL aufgeführt sind.
Ein XML-Webdienstclient startet die XML-Webdienstermittlung, indem eine URL für die - oder DiscoverAny -DiscoverMethode bereitgestellt wird. In der Regel bezieht sich diese URL auf ein Ermittlungsdokument, das sich wiederum auf Dokumente bezieht, die einen oder mehrere XML-Webdienste beschreiben, die der References -Eigenschaft hinzugefügt werden. Zu diesem Zeitpunkt wird nur dieses Dokument heruntergeladen und überprüft, um auf gültige Informationen zu XML-Webdiensten zu verweisen. Die in diesem Dokument enthaltenen Verweise werden jedoch zu diesem Zeitpunkt nicht überprüft. Stattdessen werden sie der References -Eigenschaft hinzugefügt. Um zu überprüfen, ob die Verweise gültig sind, rufen Sie die ResolveAll -Methode oder auf ResolveOneLevel , die der -Eigenschaft gültige Dokumente hinzufügen, auf die Documents verwiesen wird. Wenn ein Client die Ermittlungsergebnisse auf einem Datenträger speichern möchte, rufen Sie schließlich die WriteAll -Methode auf.
Wenn der programmgesteuerte Zugriff auf die XML-Webdienstermittlung nicht erforderlich ist, liefert das Windows SDK das Web Services Discovery Tool (Disco.exe) zum Ermitteln von XML-Webdiensten in einer Eingabeaufforderung. Weitere Informationen finden Sie unter Web Services Discovery Tool (Disco.exe).
Konstruktoren
DiscoveryClientProtocol() |
Initialisiert eine neue Instanz der DiscoveryClientProtocol-Klasse. |
Eigenschaften
AdditionalInformation |
Ruft zusätzliche Informationen über die im Discovery-Dokument gefundenen Verweise ab. |
AllowAutoRedirect |
Ruft ab oder legt fest, ob der Client automatisch Serverumleitungen folgt. (Geerbt von HttpWebClientProtocol) |
CanRaiseEvents |
Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann. (Geerbt von Component) |
ClientCertificates |
Ruft die Auflistung von Clientzertifikaten ab. (Geerbt von HttpWebClientProtocol) |
ConnectionGroupName |
Ruft den Namen der Verbindungsgruppe für die Anforderung ab oder legt diesen fest. (Geerbt von WebClientProtocol) |
Container |
Ruft die IContainer ab, die in der Component enthalten ist. (Geerbt von Component) |
CookieContainer |
Ruft die Auflistung der Cookies ab oder legt diese fest. (Geerbt von HttpWebClientProtocol) |
Credentials |
Ruft Sicherheitsinformationen für die XML-Webdienst-Clientauthentifizierung ab oder legt diese fest. (Geerbt von WebClientProtocol) |
DesignMode |
Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet. (Geerbt von Component) |
Documents |
Ruft eine Auflistung von Discovery-Dokumenten ab. |
EnableDecompression |
Ruft einen Wert ab, der angibt, ob die Dekomprimierung für dieses HttpWebClientProtocol aktiviert ist, oder legt den Wert fest. (Geerbt von HttpWebClientProtocol) |
Errors |
Ruft eine Auflistung von Ausnahmen ab, die während des Aufrufs von Methoden aus dieser Klasse aufgetreten sind. |
Events |
Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind. (Geerbt von Component) |
PreAuthenticate |
Ruft ab oder legt fest, ob die Vorauthentifizierung aktiviert ist. (Geerbt von WebClientProtocol) |
Proxy |
Ruft die Proxyinformationen zum Erstellen einer XML-Webdienstanforderung über einen Firewall ab oder legt sie fest. (Geerbt von HttpWebClientProtocol) |
References |
Eine Auflistung von Verweisen, die in aufgelösten Discovery-Dokumenten gefunden wurden. |
RequestEncoding |
Die Encoding, die für die Clientanforderung an den XML-Webdienst verwendet wird. (Geerbt von WebClientProtocol) |
Site |
Ruft den ISite von Component ab oder legt ihn fest. (Geerbt von Component) |
Timeout |
Gibt die Zeitspanne an, die ein XML-Webdienstclient auf den Eingang einer Antwort auf eine synchrone XML-Webdienstanforderung wartet (in Millisekunden). (Geerbt von WebClientProtocol) |
UnsafeAuthenticatedConnectionSharing |
Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob die Freigabe von Verbindungen aktiviert ist, wenn der Client für die Herstellung einer Verbindung mit dem Webserver, auf dem der XML-Webdienst gespeichert ist, die NTLM-Authentifizierung verwendet. (Geerbt von HttpWebClientProtocol) |
Url |
Ruft die Basis-URL des vom Client angeforderten XML-Webdiensts ab oder legt sie fest. (Geerbt von WebClientProtocol) |
UseDefaultCredentials |
Ruft einen Wert ab, der angibt, ob die Credentials-Eigenschaft auf den Wert der DefaultCredentials-Eigenschaft festgelegt werden soll, oder legt diesen fest. (Geerbt von WebClientProtocol) |
UserAgent |
Ruft den mit jeder Anforderung gesendeten Wert für den User-Agent-Header ab oder legt diesen fest. (Geerbt von HttpWebClientProtocol) |
Methoden
Abort() |
Bricht eine Anforderung an eine XML-Webdienstmethode ab. (Geerbt von WebClientProtocol) |
CancelAsync(Object) |
Bricht einen asynchronen Aufruf der XML-Webdienstmethode ab, es sei denn, der Aufruf ist bereits abgeschlossen. (Geerbt von HttpWebClientProtocol) |
CreateObjRef(Type) |
Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Geerbt von MarshalByRefObject) |
Discover(String) |
Ermittelt die angegebene URL, um zu bestimmen, ob sie ein Discovery-Dokument darstellt. |
DiscoverAny(String) |
Ermittelt die angegebene URL, um zu bestimmen, ob diese ein Discovery-Dokument, eine Dienstbeschreibung oder ein XSD-Schema (XML Schema Definition) darstellt. |
Dispose() |
Gibt alle vom Component verwendeten Ressourcen frei. (Geerbt von Component) |
Dispose(Boolean) |
Gibt die von Component verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. (Geerbt von Component) |
Download(String) |
Lädt das Discovery-Dokument unter der angegebenen URL in ein Stream-Objekt herunter. |
Download(String, String) |
Lädt das Discovery-Dokument unter der angegebenen URL in ein Stream-Objekt herunter, wobei der |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetLifetimeService() |
Veraltet.
Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Geerbt von MarshalByRefObject) |
GetService(Type) |
Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt. (Geerbt von Component) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
GetWebRequest(Uri) |
Erstellt eine WebRequest für den angegebenen URI. (Geerbt von HttpWebClientProtocol) |
GetWebResponse(WebRequest) |
Gibt eine Antwort von einer synchronen Anforderung an eine XML-Webdienstmethode zurück. (Geerbt von HttpWebClientProtocol) |
GetWebResponse(WebRequest, IAsyncResult) |
Gibt eine Antwort von einer asynchronen Anforderung an eine XML-Webdienstmethode zurück. (Geerbt von HttpWebClientProtocol) |
InitializeLifetimeService() |
Veraltet.
Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab. (Geerbt von MarshalByRefObject) |
LoadExternals() |
Veraltet.
Weist das DiscoveryClientProtocol-Objekt an, externe Verweise zu laden. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
MemberwiseClone(Boolean) |
Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Geerbt von MarshalByRefObject) |
ReadAll(String) |
Liest eine Datei ein, die eine Zuordnung gespeicherter Discovery-Dokumente enthält, die die Documents-Eigenschaft und die References-Eigenschaft füllen, wobei in der Datei auf Discovery-Dokumente, XSD-Schemas (XML Schema Definition) und Dienstbeschreibungen verwiesen wird. |
ResolveAll() |
Löst alle Verweise auf Discovery-Dokumente, XSD-Schemas (XML Schema Definition) und Dienstbeschreibungen in der References-Eigenschaft sowie alle gefundenen Verweise in Discovery-Dokumenten auf, auf die verwiesen wurde. |
ResolveOneLevel() |
Löst alle Verweise auf Discovery-Dokumente, XSD-Schemas (XML Schema Definition) und Dienstbeschreibungen in References sowie Verweise auf, die in diesen Discovery-Dokumenten gefunden wurden. |
ToString() |
Gibt einen String zurück, der den Namen der Component enthält (sofern vorhanden). Diese Methode darf nicht überschrieben werden. (Geerbt von Component) |
WriteAll(String, String) |
Schreibt alle Discovery-Dokumente, XSD-Schemas (XML Schema Definition) und Dienstbeschreibungen in der Documents-Eigenschaft in das angegebene Verzeichnis und erstellt eine Datei in diesem Verzeichnis. |
Ereignisse
Disposed |
Tritt auf, wenn die Komponente von einem Aufruf der Dispose()-Methode verworfen wird. (Geerbt von Component) |