Sdílet prostřednictvím


DiscoveryClientProtocol Třída

Definice

Poskytuje podporu pro programové vyvolání zjišťování webových služeb XML.

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
Dědičnost

Příklady

Následující příklad kódu je webový formulář, který demonstruje, jak používat DiscoveryClientProtocol třídu společně s ostatními třídami v System.Web.Services.Discovery oboru názvů k programovému vyvolání zjišťování webových služeb XML. Příklad kódu ukazuje použití Discover, , DiscoverDiscoverAny, ResolveAll, ResolveOneLevelReadAll , a WriteAll metody.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete v tématu Přehled zneužití skriptů.

<%@ 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>

Poznámky

Zjišťování webové služby XML je proces vyhledání nebo zjišťování, jeden nebo více souvisejících dokumentů, které popisují dostupné webové služby XML. Prostřednictvím webových služeb XML zjistí, že klienti webové služby XML se dozví o dostupných webových službách XML na dané adrese URL a o tom, jak je používat. Zjišťování webových služeb XML funguje z místního umístění, které jste již získali adresu URL k dokumentu zjišťování, pravděpodobně prostřednictvím adresářové služby, ale nemáte podrobnosti o nabízených webových službách XML. Prostřednictvím zjišťování webových služeb XML můžete zjistit podrobnosti o webových službách XML uvedených na DiscoveryDocument konkrétní adrese URL.

Klient webové služby XML spustí zjišťování webových služeb XML zadáním adresy URL buď metodám Discover , nebo DiscoverAny metodám. Tato adresa URL obvykle odkazuje na dokument zjišťování, který zase odkazuje na dokumenty popisující jednu nebo více webových služeb XML, které jsou přidány do References vlastnosti. V tomto okamžiku se stáhne a ověří pouze tento dokument tak, aby odkazovat na platné informace o webových službách XML. Odkazy obsažené v tomto dokumentu však nejsou v této fázi ověřeny. Místo toho se přidají do References vlastnosti. Chcete-li ověřit, zda jsou odkazy platné, vyvoláte ResolveAll nebo ResolveOneLevel metody, které přidávají platné odkazované dokumenty do Documents vlastnosti. Pokud chce klient uložit výsledky zjišťování na disk, spusťte metodu WriteAll .

Pokud programový přístup ke zjišťování webových služeb XML není potřeba, sada Windows SDK dodává nástroj pro zjišťování webových služeb (Disco.exe) pro zjišťování webových služeb XML v příkazovém řádku. Další podrobnosti naleznete v tématu Nástroj pro zjišťování webových služeb (Disco.exe).

Konstruktory

Name Description
DiscoveryClientProtocol()

Inicializuje novou instanci DiscoveryClientProtocol třídy.

Vlastnosti

Name Description
AdditionalInformation

Získá informace kromě odkazů nalezených v dokumentu zjišťování.

AllowAutoRedirect

Získá nebo nastaví, zda klient automaticky sleduje přesměrování serveru.

(Zděděno od HttpWebClientProtocol)
CanRaiseEvents

Získá hodnotu určující, zda komponenta může vyvolat událost.

(Zděděno od Component)
ClientCertificates

Získá kolekci klientských certifikátů.

(Zděděno od HttpWebClientProtocol)
ConnectionGroupName

Získá nebo nastaví název skupiny připojení pro požadavek.

(Zděděno od WebClientProtocol)
Container

Získá ten IContainer , který obsahuje Component.

(Zděděno od Component)
CookieContainer

Získá nebo nastaví kolekci souborů cookie.

(Zděděno od HttpWebClientProtocol)
Credentials

Získá nebo nastaví přihlašovací údaje zabezpečení pro ověřování klienta webové služby XML.

(Zděděno od WebClientProtocol)
DesignMode

Získá hodnotu, která označuje, zda Component je aktuálně v režimu návrhu.

(Zděděno od Component)
Documents

Získá kolekci dokumentů zjišťování.

EnableDecompression

Získá nebo nastaví hodnotu, která označuje, zda je dekomprese povolena pro toto HttpWebClientProtocol.

(Zděděno od HttpWebClientProtocol)
Errors

Získá kolekci výjimek, ke kterým došlo během vyvolání metody z této třídy.

Events

Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component.

(Zděděno od Component)
PreAuthenticate

Získá nebo nastaví, zda je povoleno předběžné ověřování.

(Zděděno od WebClientProtocol)
Proxy

Získá nebo nastaví informace proxy pro vytvoření požadavku webové služby XML prostřednictvím brány firewall.

(Zděděno od HttpWebClientProtocol)
References

Kolekce odkazů nalezených v vyřešených dokumentech zjišťování.

RequestEncoding

Používá Encoding se k vytvoření požadavku klienta na webovou službu XML.

(Zděděno od WebClientProtocol)
Site

Získá nebo nastaví ISite .Component

(Zděděno od Component)
Timeout

Označuje čas, kdy klient webové služby XML čeká na odpověď na synchronní požadavek webové služby XML dorazí (v milisekundách).

(Zděděno od WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

Získá nebo nastaví hodnotu, která určuje, zda je sdílení připojení povoleno, když klient používá ověřování NTLM pro připojení k webovému serveru, který je hostitelem webové služby XML.

(Zděděno od HttpWebClientProtocol)
Url

Získá nebo nastaví základní adresu URL webové služby XML, kterou klient požaduje.

(Zděděno od WebClientProtocol)
UseDefaultCredentials

Získá nebo nastaví hodnotu, která určuje, zda má být vlastnost nastavena Credentials na hodnotu DefaultCredentials vlastnosti.

(Zděděno od WebClientProtocol)
UserAgent

Získá nebo nastaví hodnotu hlavičky uživatelského agenta, která je odeslána s každou žádostí.

(Zděděno od HttpWebClientProtocol)

Metody

Name Description
Abort()

Zruší požadavek na metodu webové služby XML.

(Zděděno od WebClientProtocol)
CancelAsync(Object)

Zruší asynchronní volání metody webové služby XML, pokud volání ještě není dokončeno.

(Zděděno od HttpWebClientProtocol)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Discover(String)

Zjistí zadanou adresu URL a určí, jestli se jedná o dokument zjišťování.

DiscoverAny(String)

Zjistí zadanou adresu URL a určí, jestli se jedná o dokument zjišťování, popis služby nebo schéma definice schématu XML (XSD).

Dispose()

Uvolní všechny prostředky používané nástrojem Component.

(Zděděno od Component)
Dispose(Boolean)

Uvolní nespravované prostředky používané Component a volitelně uvolní spravované prostředky.

(Zděděno od Component)
Download(String, String)

Stáhne dokument zjišťování na zadané adrese URL do objektu Stream a nastaví contentType parametr na kódování MIME dokumentu zjišťování.

Download(String)

Stáhne dokument zjišťování na zadané adrese URL do objektu Stream .

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jeho Container.

(Zděděno od Component)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetWebRequest(Uri)

Vytvoří WebRequest pro zadaný identifikátor URI.

(Zděděno od HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Vrátí odpověď z asynchronního požadavku na metodu webové služby XML.

(Zděděno od HttpWebClientProtocol)
GetWebResponse(WebRequest)

Vrátí odpověď z synchronního požadavku na metodu webové služby XML.

(Zděděno od HttpWebClientProtocol)
InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
LoadExternals()
Zastaralé.

Dává objektu DiscoveryClientProtocol pokyn, aby načetl všechny externí odkazy.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
ReadAll(String)

Čte v souboru obsahujícím mapu uložených dokumentů zjišťování, které naplňují Documents vlastnosti a References obsahují dokumenty zjišťování, schémata definice schématu XML (XSD) a popisy služeb odkazované v souboru.

ResolveAll()

Řeší všechny odkazy na dokumenty zjišťování, schémata XSD (XML Schema Definition) a popisy služeb ve References vlastnosti a také odkazy nalezené v odkazovaných dokumentech zjišťování.

ResolveOneLevel()

Řeší všechny odkazy na dokumenty zjišťování, schémata definice schématu XML (XSD) a popisy služeb v Referencesa také odkazy nalezené v těchto dokumentech zjišťování.

ToString()

String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od Component)
WriteAll(String, String)

Zapíše všechny dokumenty zjišťování, schémata XSD (XML Schema Definition) a popisy služby ve Documents vlastnosti do zadaného adresáře a vytvoří v daném adresáři soubor.

Událost

Name Description
Disposed

Nastane, když komponenta je uvolněna voláním Dispose() metody.

(Zděděno od Component)

Platí pro

Viz také