Freigeben über


DiscoveryClientProtocol Klasse

Definition

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 contentType-Parameter auf die MIME-Codierung des Discovery-Dokuments festgelegt wird.

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)

Gilt für:

Weitere Informationen