Bagikan melalui


DiscoveryClientProtocol Kelas

Definisi

Menyediakan dukungan untuk memanggil penemuan layanan Web XML secara terprogram.

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
Warisan

Contoh

Contoh kode berikut adalah Formulir Web yang menunjukkan cara menggunakan DiscoveryClientProtocol kelas bersama dengan kelas lain di System.Web.Services.Discovery namespace layanan untuk memanggil penemuan layanan Web XML secara terprogram. Contoh kode menunjukkan menggunakan Discovermetode , , DiscoverAny, DiscoverResolveAll, ResolveOneLeveldan ReadAllWriteAll .

Penting

Contoh ini memiliki kotak teks yang menerima input pengguna, yang merupakan potensi ancaman keamanan. Secara default, ASP.NET halaman Web memvalidasi bahwa input pengguna tidak menyertakan elemen skrip atau HTML. Untuk informasi selengkapnya, lihat Gambaran Umum Eksploitasi Skrip.

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

Keterangan

Penemuan layanan Web XML adalah proses menemukan, atau menemukan, satu atau beberapa dokumen terkait yang menjelaskan layanan Web XML yang tersedia. Ini melalui penemuan layanan Web XML yang dipelajari klien layanan Web XML tentang layanan Web XML yang tersedia di URL tertentu dan cara menggunakannya. Penemuan layanan Web XML berfungsi dari premis yang telah Anda peroleh URL ke dokumen penemuan, mungkin melalui layanan direktori, namun, Anda tidak memiliki detail tentang layanan Web XML yang ditawarkan. Melalui penemuan layanan Web XML, Anda dapat menemukan detail tentang layanan Web XML yang DiscoveryDocument tercantum di URL tertentu.

Klien layanan Web XML memulai penemuan layanan Web XML dengan menyediakan URL ke Discover metode atau DiscoverAny . Biasanya, URL ini mengacu pada dokumen penemuan, yang pada gilirannya mengacu pada dokumen yang menjelaskan satu atau beberapa layanan Web XML, yang ditambahkan ke References properti . Pada saat itu, hanya dokumen yang diunduh dan diverifikasi untuk menunjuk ke informasi yang valid tentang layanan Web XML. Namun, referensi yang terkandung dalam dokumen tersebut tidak diverifikasi pada tahap ini. Sebaliknya, mereka ditambahkan ke References properti . Untuk memverifikasi bahwa referensi valid, panggil ResolveAll metode atau ResolveOneLevel , yang menambahkan dokumen yang dirujuk yang valid ke Documents properti . Terakhir, jika klien ingin menyimpan hasil penemuan ke disk, panggil WriteAll metode .

Jika akses terprogram ke penemuan layanan Web XML tidak diperlukan, Windows SDK mengirimkan alat Penemuan Layanan Web (Disco.exe) untuk menemukan layanan Web XML dalam prompt perintah. Untuk detail selengkapnya, lihat Alat Penemuan Layanan Web (Disco.exe).

Konstruktor

DiscoveryClientProtocol()

Menginisialisasi instans baru kelas DiscoveryClientProtocol.

Properti

AdditionalInformation

Mendapatkan informasi selain referensi yang ditemukan dalam dokumen penemuan.

AllowAutoRedirect

Mendapatkan atau mengatur apakah klien secara otomatis mengikuti pengalihan server.

(Diperoleh dari HttpWebClientProtocol)
CanRaiseEvents

Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa.

(Diperoleh dari Component)
ClientCertificates

Mendapatkan koleksi sertifikat klien.

(Diperoleh dari HttpWebClientProtocol)
ConnectionGroupName

Mendapatkan atau mengatur nama grup koneksi untuk permintaan tersebut.

(Diperoleh dari WebClientProtocol)
Container

IContainer Mendapatkan yang berisi Component.

(Diperoleh dari Component)
CookieContainer

Mendapatkan atau mengatur koleksi cookie.

(Diperoleh dari HttpWebClientProtocol)
Credentials

Mendapatkan atau mengatur kredensial keamanan untuk autentikasi klien layanan Web XML.

(Diperoleh dari WebClientProtocol)
DesignMode

Mendapatkan nilai yang menunjukkan apakah Component saat ini dalam mode desain.

(Diperoleh dari Component)
Documents

Mendapatkan kumpulan dokumen penemuan.

EnableDecompression

Mendapatkan atau menetapkan nilai yang menunjukkan apakah dekompresi diaktifkan untuk ini HttpWebClientProtocol.

(Diperoleh dari HttpWebClientProtocol)
Errors

Mendapatkan kumpulan pengecualian yang terjadi selama pemanggilan metode dari kelas ini.

Events

Mendapatkan daftar penanganan aktivitas yang dilampirkan ke ini Component.

(Diperoleh dari Component)
PreAuthenticate

Mendapatkan atau mengatur apakah pra-autentikasi diaktifkan.

(Diperoleh dari WebClientProtocol)
Proxy

Mendapatkan atau mengatur informasi proksi untuk membuat permintaan layanan Web XML melalui firewall.

(Diperoleh dari HttpWebClientProtocol)
References

Kumpulan referensi yang ditemukan dalam dokumen penemuan yang diselesaikan.

RequestEncoding

yang Encoding digunakan untuk membuat permintaan klien ke layanan Web XML.

(Diperoleh dari WebClientProtocol)
Site

Mendapatkan atau mengatur ISite dari Component.

(Diperoleh dari Component)
Timeout

Menunjukkan waktu klien layanan Web XML menunggu balasan permintaan layanan Web XML sinkron tiba (dalam milidetik).

(Diperoleh dari WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

Mendapatkan atau menetapkan nilai yang menunjukkan apakah berbagi koneksi diaktifkan saat klien menggunakan autentikasi NTLM untuk menyambungkan ke server Web yang menghosting layanan Web XML.

(Diperoleh dari HttpWebClientProtocol)
Url

Mendapatkan atau mengatur URL dasar layanan Web XML yang diminta klien.

(Diperoleh dari WebClientProtocol)
UseDefaultCredentials

Mendapatkan atau menetapkan nilai yang menunjukkan apakah akan mengatur Credentials properti ke nilai DefaultCredentials properti.

(Diperoleh dari WebClientProtocol)
UserAgent

Mendapatkan atau menetapkan nilai untuk header agen pengguna yang dikirim dengan setiap permintaan.

(Diperoleh dari HttpWebClientProtocol)

Metode

Abort()

Membatalkan permintaan ke metode layanan Web XML.

(Diperoleh dari WebClientProtocol)
CancelAsync(Object)

Membatalkan panggilan asinkron ke metode layanan Web XML, kecuali panggilan telah selesai.

(Diperoleh dari HttpWebClientProtocol)
CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
Discover(String)

Menemukan URL yang disediakan untuk menentukan apakah itu adalah dokumen penemuan.

DiscoverAny(String)

Menemukan URL yang disediakan untuk menentukan apakah itu adalah dokumen penemuan, deskripsi layanan, atau skema Definisi Skema XML (XSD).

Dispose()

Merilis semua sumber daya yang Componentdigunakan oleh .

(Diperoleh dari Component)
Dispose(Boolean)

Merilis sumber daya tidak terkelola yang digunakan oleh Component dan secara opsional merilis sumber daya terkelola.

(Diperoleh dari Component)
Download(String)

Mengunduh dokumen penemuan di URL yang Stream disediakan ke dalam objek.

Download(String, String)

Mengunduh dokumen penemuan di URL yang Stream disediakan ke dalam objek, mengatur contentType parameter ke pengodean MIME dari dokumen penemuan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetService(Type)

Mengembalikan objek yang mewakili layanan yang disediakan oleh Component atau oleh Container.

(Diperoleh dari Component)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetWebRequest(Uri)

WebRequest Membuat untuk URI yang ditentukan.

(Diperoleh dari HttpWebClientProtocol)
GetWebResponse(WebRequest)

Mengembalikan respons dari permintaan sinkron ke metode layanan Web XML.

(Diperoleh dari HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Mengembalikan respons dari permintaan asinkron ke metode layanan Web XML.

(Diperoleh dari HttpWebClientProtocol)
InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
LoadExternals()
Kedaluwarsa.

Menginstruksikan DiscoveryClientProtocol objek untuk memuat referensi eksternal apa pun.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
ReadAll(String)

Membaca dalam file yang berisi peta dokumen penemuan tersimpan yang mengisi Documents properti dan References , dengan dokumen penemuan, skema Definisi Skema XML (XSD), dan deskripsi layanan yang direferensikan dalam file.

ResolveAll()

Menyelesaikan semua referensi ke dokumen penemuan, skema Definisi Skema XML (XSD), dan deskripsi layanan di References properti , serta referensi yang ditemukan dalam dokumen penemuan yang direferensikan.

ResolveOneLevel()

Menyelesaikan semua referensi ke dokumen penemuan, skema Definisi Skema XML (XSD) dan deskripsi layanan di References, serta referensi yang ditemukan dalam dokumen penemuan tersebut.

ToString()

Mengembalikan yang String berisi nama Component, jika ada. Metode ini tidak boleh ditimpa.

(Diperoleh dari Component)
WriteAll(String, String)

Menulis semua dokumen penemuan, skema Definisi Skema XML (XSD), dan Deskripsi Layanan di properti ke direktori yang disediakan dan membuat file di direktori tersebut Documents .

Acara

Disposed

Terjadi ketika komponen dibuang oleh panggilan ke Dispose() metode .

(Diperoleh dari Component)

Berlaku untuk

Lihat juga