DiscoveryClientProtocol Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt ondersteuning voor programmatisch aanroepen van XML-webservices.
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
- Overname
Voorbeelden
Het volgende codevoorbeeld is een webformulier waarin wordt gedemonstreerd hoe u de DiscoveryClientProtocol klasse samen met de andere klassen in de System.Web.Services.Discovery naamruimte kunt gebruiken om programmatisch XML-webservicesdetectie aan te roepen. In het codevoorbeeld ziet u hoe u de Discovermethoden , , DiscoverDiscoverAny, ReadAllResolveAllResolveOneLevelen WriteAll methoden gebruikt.
Important
Dit voorbeeld heeft een tekstvak dat gebruikersinvoer accepteert. Dit is een mogelijke beveiligingsrisico. Standaard valideren ASP.NET webpagina's dat gebruikersinvoer geen script- of HTML-elementen bevat. Zie Overzicht van Script Exploits voor meer informatie.
<%@ 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>
Opmerkingen
XML-webservicedetectie is het proces van het zoeken of detecteren van een of meer gerelateerde documenten die beschikbare XML-webservices beschrijven. Het is via XML-webservicesdetectie dat XML-webserviceclients meer te weten komen over de beschikbare XML-webservices op een bepaalde URL en hoe u deze kunt gebruiken. Detectie van XML-webservices werkt van het uitgangspunt dat u de URL al hebt verkregen naar een detectiedocument, mogelijk via een adreslijstservice, maar u beschikt niet over de details over de aangeboden XML-webservices. Via XML-webservicesdetectie kunt u de details ontdekken over de XML-webservices die worden vermeld in een DiscoveryDocument specifieke URL.
Een XML-webserviceclient start xml-webservicesdetectie door een URL aan de Discover of DiscoverAny methoden op te geven. Deze URL verwijst doorgaans naar een detectiedocument, dat op zijn beurt verwijst naar documenten die een of meer XML-webservices beschrijven, die aan de References eigenschap worden toegevoegd. Op dat moment wordt alleen dat document gedownload en geverifieerd om te verwijzen naar geldige informatie over XML-webservices. In dit stadium worden de verwijzingen in dat document echter niet geverifieerd. In plaats daarvan worden ze toegevoegd aan de References eigenschap. Als u wilt controleren of de verwijzingen geldig zijn, roept u de ResolveAll of ResolveOneLevel methoden aan, waarmee geldige documenten waarnaar wordt verwezen aan de Documents eigenschap worden toegevoegd. Als een client de detectieresultaten op de schijf wil opslaan, roept u de WriteAll methode aan.
Als programmatische toegang tot XML-webservicesdetectie niet nodig is, wordt de Windows SDK geleverd met het hulpprogramma Web Services Discovery (Disco.exe) voor het detecteren van XML-webservices binnen een opdrachtprompt. Zie Web Services Discovery Tool (Disco.exe) voor meer informatie.
Constructors
| Name | Description |
|---|---|
| DiscoveryClientProtocol() |
Initialiseert een nieuw exemplaar van de DiscoveryClientProtocol klasse. |
Eigenschappen
| Name | Description |
|---|---|
| AdditionalInformation |
Haalt informatie op naast verwijzingen in het detectiedocument. |
| AllowAutoRedirect |
Hiermee wordt opgehaald of ingesteld of de client automatisch serveromleidingen volgt. (Overgenomen van HttpWebClientProtocol) |
| CanRaiseEvents |
Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren. (Overgenomen van Component) |
| ClientCertificates |
Hiermee haalt u de verzameling clientcertificaten op. (Overgenomen van HttpWebClientProtocol) |
| ConnectionGroupName |
Hiermee haalt u de naam van de verbindingsgroep voor de aanvraag op of stelt u deze in. (Overgenomen van WebClientProtocol) |
| Container |
Hiermee haalt u het IContainer bestand op dat de Component. (Overgenomen van Component) |
| CookieContainer |
Hiermee haalt u de verzameling cookies op of stelt u deze in. (Overgenomen van HttpWebClientProtocol) |
| Credentials |
Hiermee haalt u beveiligingsreferenties op voor clientverificatie van xml-webservices of stelt u deze in. (Overgenomen van WebClientProtocol) |
| DesignMode |
Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is. (Overgenomen van Component) |
| Documents |
Hiermee haalt u een verzameling detectiedocumenten op. |
| EnableDecompression |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of decompressie hiervoor is ingeschakeld HttpWebClientProtocol. (Overgenomen van HttpWebClientProtocol) |
| Errors |
Hiermee wordt een verzameling uitzonderingen opgehaald die zijn opgetreden tijdens het aanroepen van de methode uit deze klasse. |
| Events |
Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld. (Overgenomen van Component) |
| PreAuthenticate |
Hiermee haalt u op of stelt u in of verificatie vooraf is ingeschakeld. (Overgenomen van WebClientProtocol) |
| Proxy |
Hiermee haalt u proxygegevens op voor het maken van een XML-webserviceaanvraag via een firewall. (Overgenomen van HttpWebClientProtocol) |
| References |
Een verzameling verwijzingen gevonden in opgeloste detectiedocumenten. |
| RequestEncoding |
Hiermee Encoding wordt de clientaanvraag naar de XML-webservice verzonden. (Overgenomen van WebClientProtocol) |
| Site |
Haalt of stelt de ISite van de Component. (Overgenomen van Component) |
| Timeout |
Geeft de tijd aan waarop een XML-webserviceclient wacht tot het antwoord op een synchrone XML-webserviceaanvraag binnenkomt (in milliseconden). (Overgenomen van WebClientProtocol) |
| UnsafeAuthenticatedConnectionSharing |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of delen van verbindingen is ingeschakeld wanneer de client NTLM-verificatie gebruikt om verbinding te maken met de webserver die als host fungeert voor de XML-webservice. (Overgenomen van HttpWebClientProtocol) |
| Url |
Haalt de basis-URL van de XML-webservice op die de client aanvraagt of stelt deze in. (Overgenomen van WebClientProtocol) |
| UseDefaultCredentials |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de Credentials eigenschap moet worden ingesteld op de waarde van de DefaultCredentials eigenschap. (Overgenomen van WebClientProtocol) |
| UserAgent |
Hiermee wordt de waarde opgehaald of ingesteld voor de header van de gebruikersagent die bij elke aanvraag wordt verzonden. (Overgenomen van HttpWebClientProtocol) |
Methoden
| Name | Description |
|---|---|
| Abort() |
Hiermee annuleert u een aanvraag naar een XML-webservicemethode. (Overgenomen van WebClientProtocol) |
| CancelAsync(Object) |
Annuleert een asynchrone aanroep naar een XML-webservicemethode, tenzij de aanroep al is voltooid. (Overgenomen van HttpWebClientProtocol) |
| CreateObjRef(Type) |
Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object. (Overgenomen van MarshalByRefObject) |
| Discover(String) |
Hiermee wordt de opgegeven URL gedetecteerd om te bepalen of het een detectiedocument is. |
| DiscoverAny(String) |
Hiermee wordt de opgegeven URL gedetecteerd om te bepalen of het een detectiedocument, servicebeschrijving of een XSD-schema (XML Schema Definition) is. |
| Dispose() |
Alle resources die worden gebruikt door de Component. (Overgenomen van Component) |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die worden gebruikt door de Component beheerde resources en brengt eventueel de beheerde resources vrij. (Overgenomen van Component) |
| Download(String, String) |
Hiermee downloadt u het detectiedocument op de opgegeven URL in een Stream object en stelt u de |
| Download(String) |
Hiermee downloadt u het detectiedocument op de opgegeven URL in een Stream object. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetLifetimeService() |
Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd. (Overgenomen van MarshalByRefObject) |
| GetService(Type) |
Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container. (Overgenomen van Component) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| GetWebRequest(Uri) |
Hiermee maakt u een WebRequest voor de opgegeven URI. (Overgenomen van HttpWebClientProtocol) |
| GetWebResponse(WebRequest, IAsyncResult) |
Retourneert een antwoord van een asynchrone aanvraag naar een XML-webservicemethode. (Overgenomen van HttpWebClientProtocol) |
| GetWebResponse(WebRequest) |
Retourneert een antwoord van een synchrone aanvraag naar een XML-webservicemethode. (Overgenomen van HttpWebClientProtocol) |
| InitializeLifetimeService() |
Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren. (Overgenomen van MarshalByRefObject) |
| LoadExternals() |
Verouderd.
Hiermee wordt het DiscoveryClientProtocol object geïnstrueerd om eventuele externe verwijzingen te laden. |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| MemberwiseClone(Boolean) |
Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object. (Overgenomen van MarshalByRefObject) |
| ReadAll(String) |
Leest in een bestand met een kaart van opgeslagen detectiedocumenten die de Documents en References eigenschappen vullen, met detectiedocumenten, XSD-schema's (XML Schema Definition) en servicebeschrijvingen waarnaar wordt verwezen in het bestand. |
| ResolveAll() |
Hiermee worden alle verwijzingen naar detectiedocumenten, XSD-schema's (XML Schema Definition) en servicebeschrijvingen in de References eigenschap, evenals verwijzingen in detectiedocumenten waarnaar wordt verwezen, omgezet. |
| ResolveOneLevel() |
Lost alle verwijzingen naar detectiedocumenten, XSD-schema's (XML Schema Definition) en servicebeschrijvingen in References, evenals verwijzingen in die detectiedocumenten. |
| ToString() |
Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven. (Overgenomen van Component) |
| WriteAll(String, String) |
Schrijft alle detectiedocumenten, XSD-schema's (XML Schema Definition) en servicebeschrijvingen in de Documents eigenschap naar de opgegeven map en maakt een bestand in die map. |
gebeurtenis
| Name | Description |
|---|---|
| Disposed |
Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode. (Overgenomen van Component) |