DiscoveryClientProtocol Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ger stöd för att programmatiskt anropa XML-webbtjänstidentifiering.
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
- Arv
Exempel
Följande kodexempel är ett webbformulär som visar hur du använder DiscoveryClientProtocol klassen tillsammans med de andra klasserna i System.Web.Services.Discovery namnområdet för att programmatiskt anropa XML-webbtjänstidentifiering. Kodexemplet visar hur du använder Discovermetoderna , DiscoverAny, Discover, ResolveAll, ResolveOneLevelReadAll och WriteAll .
Important
Det här exemplet har en textruta som accepterar användarindata, vilket är ett potentiellt säkerhetshot. Som standard kontrollerar ASP.NET webbsidor att användarindata inte innehåller skript- eller HTML-element. Mer information finns i Översikt över skriptexploateringar.
<%@ 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>
Kommentarer
XML-webbtjänstidentifiering är processen att hitta eller identifiera ett eller flera relaterade dokument som beskriver tillgängliga XML-webbtjänster. Det är genom IDENTIFIERING av XML-webbtjänster som XML-webbtjänstklienter lär sig mer om tillgängliga XML-webbtjänster vid en viss URL och hur de används. IDENTIFIERING av XML-webbtjänster fungerar från den lokala plats där du redan har hämtat URL:en till ett identifieringsdokument, eventuellt via en katalogtjänst, men du har inte informationen om de XML-webbtjänster som erbjuds. Genom identifiering av XML-webbtjänster kan du identifiera information om XML-webbtjänster som anges i en DiscoveryDocument på en specifik URL.
En XML-webbtjänstklient startar XML-webbtjänstidentifiering genom att ange en URL till antingen Discover metoderna eller DiscoverAny . Den här URL:en refererar vanligtvis till ett identifieringsdokument som i sin tur refererar till dokument som beskriver en eller flera XML-webbtjänster som läggs till i References egenskapen. Då laddas endast dokumentet ned och verifieras för att peka på giltig information om XML-webbtjänster. Referenserna i dokumentet verifieras dock inte i det här skedet. I stället läggs de till i egenskapen References . Om du vill kontrollera att referenserna är giltiga anropar ResolveAll du metoderna eller ResolveOneLevel som lägger till giltiga refererade dokument i Documents egenskapen. Om en klient slutligen vill spara identifieringsresultatet på disken anropar du WriteAll metoden.
Om programmatisk åtkomst till XML-webbtjänster inte behövs, skickar Windows SDK verktyget Web Services Discovery (Disco.exe) för identifiering av XML-webbtjänster i en kommandotolk. Mer information finns i Web Services Discovery Tool (Disco.exe).
Konstruktorer
| Name | Description |
|---|---|
| DiscoveryClientProtocol() |
Initierar en ny instans av DiscoveryClientProtocol klassen. |
Egenskaper
| Name | Description |
|---|---|
| AdditionalInformation |
Hämtar information utöver referenser som finns i identifieringsdokumentet. |
| AllowAutoRedirect |
Hämtar eller anger om klienten automatiskt följer serveromdirigeringar. (Ärvd från HttpWebClientProtocol) |
| CanRaiseEvents |
Hämtar ett värde som anger om komponenten kan generera en händelse. (Ärvd från Component) |
| ClientCertificates |
Hämtar samlingen med klientcertifikat. (Ärvd från HttpWebClientProtocol) |
| ConnectionGroupName |
Hämtar eller anger namnet på anslutningsgruppen för begäran. (Ärvd från WebClientProtocol) |
| Container |
Hämtar som IContainer innehåller Component. (Ärvd från Component) |
| CookieContainer |
Hämtar eller anger insamling av cookies. (Ärvd från HttpWebClientProtocol) |
| Credentials |
Hämtar eller anger säkerhetsautentiseringsuppgifter för XML-webbtjänstklientautentisering. (Ärvd från WebClientProtocol) |
| DesignMode |
Hämtar ett värde som anger om det Component för närvarande är i designläge. (Ärvd från Component) |
| Documents |
Hämtar en samling identifieringsdokument. |
| EnableDecompression |
Hämtar eller anger ett värde som anger om dekomprimering är aktiverat för detta HttpWebClientProtocol. (Ärvd från HttpWebClientProtocol) |
| Errors |
Hämtar en samling undantag som inträffade under anrop av metoden från den här klassen. |
| Events |
Hämtar listan över händelsehanterare som är kopplade till den här Component. (Ärvd från Component) |
| PreAuthenticate |
Hämtar eller anger om förautentisering är aktiverat. (Ärvd från WebClientProtocol) |
| Proxy |
Hämtar eller anger proxyinformation för att göra en XML-webbtjänstbegäran via en brandvägg. (Ärvd från HttpWebClientProtocol) |
| References |
En samling referenser som finns i lösta identifieringsdokument. |
| RequestEncoding |
Används Encoding för att göra klientbegäran till XML-webbtjänsten. (Ärvd från WebClientProtocol) |
| Site |
Hämtar eller ställer in ISite i Component. (Ärvd från Component) |
| Timeout |
Anger den tid då en XML-webbtjänstklient väntar på att svaret på en synkron XML-webbtjänstbegäran ska tas emot (i millisekunder). (Ärvd från WebClientProtocol) |
| UnsafeAuthenticatedConnectionSharing |
Hämtar eller anger ett värde som anger om anslutningsdelning är aktiverat när klienten använder NTLM-autentisering för att ansluta till den webbserver som är värd för XML-webbtjänsten. (Ärvd från HttpWebClientProtocol) |
| Url |
Hämtar eller anger bas-URL:en för DEN XML-webbtjänst som klienten begär. (Ärvd från WebClientProtocol) |
| UseDefaultCredentials |
Hämtar eller anger ett värde som anger om egenskapen ska anges Credentials till egenskapens DefaultCredentials värde. (Ärvd från WebClientProtocol) |
| UserAgent |
Hämtar eller anger värdet för användaragenthuvudet som skickas med varje begäran. (Ärvd från HttpWebClientProtocol) |
Metoder
| Name | Description |
|---|---|
| Abort() |
Avbryter en begäran till en XML-webbtjänstmetod. (Ärvd från WebClientProtocol) |
| CancelAsync(Object) |
Avbryter ett asynkront anrop till en XML-webbtjänstmetod, såvida inte anropet redan har slutförts. (Ärvd från HttpWebClientProtocol) |
| CreateObjRef(Type) |
Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt. (Ärvd från MarshalByRefObject) |
| Discover(String) |
Identifierar den angivna URL:en för att avgöra om det är ett identifieringsdokument. |
| DiscoverAny(String) |
Identifierar den angivna URL:en för att avgöra om det är ett identifieringsdokument, en tjänstbeskrivning eller ett XSD-schema (XML Schema Definition). |
| Dispose() |
Släpper alla resurser som används av Component. (Ärvd från Component) |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av Component och släpper eventuellt de hanterade resurserna. (Ärvd från Component) |
| Download(String, String) |
Laddar ned identifieringsdokumentet på den angivna URL:en till ett Stream objekt och anger parametern |
| Download(String) |
Laddar ned identifieringsdokumentet på den angivna URL:en till ett Stream objekt. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetLifetimeService() |
Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| GetService(Type) |
Returnerar ett objekt som representerar en tjänst som tillhandahålls av Component eller av dess Container. (Ärvd från Component) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetWebRequest(Uri) |
Skapar en WebRequest för den angivna URI:n. (Ärvd från HttpWebClientProtocol) |
| GetWebResponse(WebRequest, IAsyncResult) |
Returnerar ett svar från en asynkron begäran till en XML-webbtjänstmetod. (Ärvd från HttpWebClientProtocol) |
| GetWebResponse(WebRequest) |
Returnerar ett svar från en synkron begäran till en XML-webbtjänstmetod. (Ärvd från HttpWebClientProtocol) |
| InitializeLifetimeService() |
Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| LoadExternals() |
Föråldrad.
Instruerar objektet DiscoveryClientProtocol att läsa in eventuella externa referenser. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| MemberwiseClone(Boolean) |
Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet. (Ärvd från MarshalByRefObject) |
| ReadAll(String) |
Läser i en fil som innehåller en karta över sparade identifieringsdokument som fyller Documents i egenskaperna och References med identifieringsdokument, XSD-schemascheman (XML Schema Definition) och tjänstbeskrivningar som refereras i filen. |
| ResolveAll() |
Löser alla referenser till identifieringsdokument, XSD-scheman (XML Schema Definition) och tjänstbeskrivningar i References egenskapen samt referenser som finns i refererade identifieringsdokument. |
| ResolveOneLevel() |
Löser alla referenser till identifieringsdokument, XSD-scheman (XML Schema Definition) och tjänstbeskrivningar i References, samt referenser som finns i dessa identifieringsdokument. |
| ToString() |
Returnerar ett String som innehåller namnet på Component, om det finns. Den här metoden bör inte åsidosättas. (Ärvd från Component) |
| WriteAll(String, String) |
Skriver alla identifieringsdokument, XSD-scheman (XML Schema Definition) och Tjänstbeskrivningar i Documents egenskapen till den angivna katalogen och skapar en fil i katalogen. |
Händelser
| Name | Description |
|---|---|
| Disposed |
Inträffar när komponenten tas bort av ett anrop till Dispose() metoden. (Ärvd från Component) |