Udostępnij za pośrednictwem


DiscoveryClientProtocol Klasa

Definicja

Zapewnia obsługę programowego wywoływania odnajdywania usług sieci Web 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
Dziedziczenie

Przykłady

Poniższy przykład kodu to formularz internetowy pokazujący, jak używać DiscoveryClientProtocol klasy razem z innymi klasami w przestrzeni nazw w System.Web.Services.Discovery celu programowego wywoływania odnajdywania usług sieci Web XML. W przykładzie kodu pokazano przy użyciu Discovermetod , , DiscoverDiscoverAny, ResolveAll, ResolveOneLevelReadAll i WriteAll .

Ważne

Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

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

Uwagi

Odnajdywanie usługi sieci Web XML to proces lokalizowania lub odnajdywania co najmniej jednego powiązanego dokumentu opisującego dostępne usługi sieci Web XML. Odbywa się to za pośrednictwem odnajdywania usług sieci Web XML, które klienci usługi sieci Web XML poznają dostępne usługi sieci Web XML pod danym adresem URL i sposób ich używania. Odnajdywanie usług sieci Web XML działa z lokalizacji, w której adres URL został już uzyskany do dokumentu odnajdywania, prawdopodobnie za pośrednictwem usługi katalogowej, jednak nie masz szczegółowych informacji o oferowanych usługach sieci Web XML. Za pomocą funkcji odnajdywania usług sieci Web XML można odnaleźć szczegółowe informacje o usługach sieci Web XML wymienionych w DiscoveryDocument określonym adresie URL.

Klient usługi sieci Web XML uruchamia odnajdywanie usług sieci Web XML przez podanie adresu URL do Discover metod lub DiscoverAny . Zazwyczaj ten adres URL odnosi się do dokumentu odnajdywania, który z kolei odnosi się do dokumentów opisujących co najmniej jedną usługę sieci Web XML dodaną do References właściwości . W tym momencie tylko ten dokument jest pobierany i weryfikowany w celu wskazania prawidłowych informacji o usługach sieci Web XML. Jednak odwołania zawarte w tym dokumencie nie są weryfikowane na tym etapie. Zamiast tego są one dodawane do References właściwości . Aby sprawdzić, czy odwołania są prawidłowe, należy wywołać ResolveAll metody lub ResolveOneLevel , które dodają prawidłowe dokumenty, do których Documents odwołuje się właściwość . Na koniec, jeśli klient chce zapisać wyniki odnajdywania na dysku, wywołaj metodę WriteAll .

Jeśli nie jest wymagany dostęp programowy do odnajdywania usług sieci Web XML, zestaw Windows SDK dostarcza narzędzie odnajdywania usług sieci Web (Disco.exe) do odnajdywania usług sieci Web XML w wierszu polecenia. Aby uzyskać więcej informacji, zobacz Web Services Discovery Tool (Disco.exe).

Konstruktory

DiscoveryClientProtocol()

Inicjuje nowe wystąpienie klasy DiscoveryClientProtocol.

Właściwości

AdditionalInformation

Pobiera informacje oprócz odwołań znalezionych w dokumencie odnajdywania.

AllowAutoRedirect

Pobiera lub ustawia, czy klient automatycznie następuje przekierowania serwera.

(Odziedziczone po HttpWebClientProtocol)
CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.

(Odziedziczone po Component)
ClientCertificates

Pobiera kolekcję certyfikatów klienta.

(Odziedziczone po HttpWebClientProtocol)
ConnectionGroupName

Pobiera lub ustawia nazwę grupy połączeń dla żądania.

(Odziedziczone po WebClientProtocol)
Container

Pobiera element IContainer zawierający element Component.

(Odziedziczone po Component)
CookieContainer

Pobiera lub ustawia kolekcję plików cookie.

(Odziedziczone po HttpWebClientProtocol)
Credentials

Pobiera lub ustawia poświadczenia zabezpieczeń dla uwierzytelniania klienta usługi sieci Web XML.

(Odziedziczone po WebClientProtocol)
DesignMode

Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania.

(Odziedziczone po Component)
Documents

Pobiera kolekcję dokumentów odnajdywania.

EnableDecompression

Pobiera lub ustawia wartość wskazującą, czy dekompresja jest włączona dla tego HttpWebClientProtocolelementu .

(Odziedziczone po HttpWebClientProtocol)
Errors

Pobiera kolekcję wyjątków, które wystąpiły podczas wywołania metody z tej klasy.

Events

Pobiera listę programów obsługi zdarzeń dołączonych do tego Componentelementu .

(Odziedziczone po Component)
PreAuthenticate

Pobiera lub ustawia, czy jest włączone wstępne uwierzytelnianie.

(Odziedziczone po WebClientProtocol)
Proxy

Pobiera lub ustawia informacje o serwerze proxy na potrzeby tworzenia żądania usługi sieci Web XML przez zaporę.

(Odziedziczone po HttpWebClientProtocol)
References

Kolekcja odwołań znalezionych w rozwiązanych dokumentach odnajdywania.

RequestEncoding

Element Encoding używany do żądania klienta do usługi sieci Web XML.

(Odziedziczone po WebClientProtocol)
Site

Pobiera lub ustawia wartość ISite .Component

(Odziedziczone po Component)
Timeout

Wskazuje czas oczekiwania klienta usługi sieci Web XML na odebranie synchronicznego żądania usługi sieci Web XML (w milisekundach).

(Odziedziczone po WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

Pobiera lub ustawia wartość wskazującą, czy udostępnianie połączeń jest włączone, gdy klient korzysta z uwierzytelniania NTLM w celu nawiązania połączenia z serwerem sieci Web, który hostuje usługę sieci Web XML.

(Odziedziczone po HttpWebClientProtocol)
Url

Pobiera lub ustawia podstawowy adres URL usługi sieci Web XML, o który żąda klient.

(Odziedziczone po WebClientProtocol)
UseDefaultCredentials

Pobiera lub ustawia wartość wskazującą, czy właściwość ma być ustawiona Credentials na wartość DefaultCredentials właściwości.

(Odziedziczone po WebClientProtocol)
UserAgent

Pobiera lub ustawia wartość nagłówka agenta użytkownika, który jest wysyłany z każdym żądaniem.

(Odziedziczone po HttpWebClientProtocol)

Metody

Abort()

Anuluje żądanie do metody usługi sieci Web XML.

(Odziedziczone po WebClientProtocol)
CancelAsync(Object)

Anuluje asynchroniczne wywołanie metody usługi sieci Web XML, chyba że wywołanie zostało już ukończone.

(Odziedziczone po HttpWebClientProtocol)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Discover(String)

Odnajduje podany adres URL, aby określić, czy jest to dokument odnajdywania.

DiscoverAny(String)

Odnajduje podany adres URL w celu określenia, czy jest to dokument odnajdywania, opis usługi lub schemat definicji schematu XML (XSD).

Dispose()

Zwalnia wszelkie zasoby używane przez element Component.

(Odziedziczone po Component)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Component i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po Component)
Download(String)

Pobiera dokument odnajdywania pod podanym Stream adresem URL do obiektu.

Download(String, String)

Pobiera dokument odnajdywania pod podanym Stream adresem URL do obiektu, ustawiając contentType parametr na kodowanie MIME dokumentu odnajdywania.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetService(Type)

Zwraca obiekt, który reprezentuje usługę dostarczaną przez Component obiekt lub przez element Container.

(Odziedziczone po Component)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
GetWebRequest(Uri)

Tworzy obiekt WebRequest dla określonego identyfikatora URI.

(Odziedziczone po HttpWebClientProtocol)
GetWebResponse(WebRequest)

Zwraca odpowiedź z synchronicznego żądania do metody usługi sieci Web XML.

(Odziedziczone po HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Zwraca odpowiedź z asynchronicznego żądania do metody usługi sieci Web XML.

(Odziedziczone po HttpWebClientProtocol)
InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
LoadExternals()
Przestarzałe.

Instruuje obiekt, DiscoveryClientProtocol aby załadował wszystkie odwołania zewnętrzne.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
ReadAll(String)

Odczytuje w pliku zawierającym mapę zapisanych dokumentów odnajdywania wypełniających Documents właściwości i References z dokumentami odnajdywania, schematami definicji schematu XML (XSD) i opisami usług, do których odwołuje się plik.

ResolveAll()

Rozwiązuje wszystkie odwołania do dokumentów odnajdywania, schematów definicji schematu XML (XSD) i opisów usług we References właściwości, a także odwołań znalezionych w dokumentach odnajdywania, do których odwołuje się odwołanie.

ResolveOneLevel()

Rozwiązuje wszystkie odwołania do dokumentów odnajdywania, schematów definicji schematu XML (XSD) i opisów usług w programie References, a także odwołań znalezionych w tych dokumentach odnajdywania.

ToString()

Zwraca wartość String zawierającą nazwę Componentobiektu , jeśli istnieje. Ta metoda nie powinna być zastępowana.

(Odziedziczone po Component)
WriteAll(String, String)

Zapisuje wszystkie dokumenty odnajdywania, schematy definicji schematu XML (XSD) i opisy usług we Documents właściwości w podanym katalogu i tworzy plik w tym katalogu.

Zdarzenia

Disposed

Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody .

(Odziedziczone po Component)

Dotyczy

Zobacz też