Aracılığıyla paylaş


DiscoveryClientProtocol Sınıf

Tanım

XML Web hizmetleri bulma işlemini program aracılığıyla çağırma desteği sağlar.

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
Devralma

Örnekler

Aşağıdaki kod örneği, XML Web hizmetleri bulma işlemini program aracılığıyla çağırmak için sınıfın DiscoveryClientProtocol ad alanında System.Web.Services.Discovery diğer sınıflarla birlikte nasıl kullanılacağını gösteren bir Web Formudur. Kod örneği , , DiscoverAny, Discover, ReadAllResolveAllResolveOneLevelve WriteAll yöntemlerinin kullanılmasını Discovergösterir.

Önemli

Bu örnekte, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu vardır. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz . Betik Açıklarına Genel Bakış.

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

Açıklamalar

XML Web hizmeti bulma, kullanılabilir XML Web hizmetlerini açıklayan bir veya daha fazla ilgili belgeyi bulma veya bulma işlemidir. XML Web hizmeti istemcilerinin, belirli bir URL'deki kullanılabilir XML Web hizmetleri ve bunların nasıl kullanılacağı hakkında bilgi edinen XML Web hizmetleri bulma yoluyla yapılır. XML Web hizmetleri bulma, büyük olasılıkla bir dizin hizmeti aracılığıyla bulma belgesinin URL'sini zaten aldığınız şirket içinden çalışır, ancak sunulan XML Web hizmetleriyle ilgili ayrıntılara sahip olmazsınız. XML Web hizmetleri bulma aracılığıyla, belirli bir DiscoveryDocument URL'de listelenen XML Web hizmetleriyle ilgili ayrıntıları bulabilirsiniz.

XML Web hizmeti istemcisi, veya DiscoverAny yöntemlerine bir URL sağlayarak XML Web hizmetleri bulma işlemini Discover başlatır. Genellikle, bu URL bir bulma belgesine başvurur ve bu belge de özelliğine References eklenen bir veya daha fazla XML Web hizmetini açıklayan belgeleri ifade eder. Bu noktada, XML Web hizmetleri hakkındaki geçerli bilgilere işaret etmek için yalnızca bu belge indirilir ve doğrulanır. Ancak, bu belgede yer alan başvurular bu aşamada doğrulanmaz. Bunun yerine özelliğine References eklenirler. Başvuruların geçerli olduğunu doğrulamak için, özelliğine ResolveAll geçerli başvurulan belgeler ekleyen veya ResolveOneLevel yöntemlerini çağırın Documents . Son olarak, bir istemci bulma sonuçlarını diske kaydetmek istiyorsa yöntemini çağırın WriteAll .

XML Web hizmetleri bulma işlemine programlı erişim gerekmiyorsa, Windows SDK bir komut isteminde XML Web hizmetlerini bulmak için Web Hizmetleri Bulma aracını (Disco.exe) iletir. Diğer ayrıntılar için bkz. Web Hizmetleri Bulma Aracı (Disco.exe).

Oluşturucular

DiscoveryClientProtocol()

DiscoveryClientProtocol sınıfının yeni bir örneğini başlatır.

Özellikler

AdditionalInformation

Bulma belgesinde bulunan başvurulara ek olarak bilgi alır.

AllowAutoRedirect

İstemcinin sunucu yeniden yönlendirmelerini otomatik olarak takip edip etmediğini alır veya ayarlar.

(Devralındığı yer: HttpWebClientProtocol)
CanRaiseEvents

Bileşenin bir olay oluşturup oluşturamayacağını belirten bir değer alır.

(Devralındığı yer: Component)
ClientCertificates

İstemci sertifikaları koleksiyonunu alır.

(Devralındığı yer: HttpWebClientProtocol)
ConnectionGroupName

İstek için bağlantı grubunun adını alır veya ayarlar.

(Devralındığı yer: WebClientProtocol)
Container

öğesini IContainer içeren öğesini Componentalır.

(Devralındığı yer: Component)
CookieContainer

Tanımlama bilgileri koleksiyonunu alır veya ayarlar.

(Devralındığı yer: HttpWebClientProtocol)
Credentials

XML Web hizmeti istemci kimlik doğrulaması için güvenlik kimlik bilgilerini alır veya ayarlar.

(Devralındığı yer: WebClientProtocol)
DesignMode

öğesinin şu anda tasarım modunda olup olmadığını Component gösteren bir değer alır.

(Devralındığı yer: Component)
Documents

Bulma belgelerinden oluşan bir koleksiyon alır.

EnableDecompression

Bu HttpWebClientProtocoliçin açmanın etkinleştirilip etkinleştirilmediğini belirten bir değer alır veya ayarlar.

(Devralındığı yer: HttpWebClientProtocol)
Errors

Bu sınıftan yöntem çağrılırken oluşan özel durumlar koleksiyonunu alır.

Events

Bu Componentöğesine eklenen olay işleyicilerinin listesini alır.

(Devralındığı yer: Component)
PreAuthenticate

Ön kimlik doğrulamasının etkinleştirilip etkinleştirilmediğini alır veya ayarlar.

(Devralındığı yer: WebClientProtocol)
Proxy

Güvenlik duvarı üzerinden XML Web hizmeti isteği yapmak için ara sunucu bilgilerini alır veya ayarlar.

(Devralındığı yer: HttpWebClientProtocol)
References

Çözümlenen bulma belgelerinde bulunan başvuru koleksiyonu.

RequestEncoding

Encoding XML Web hizmetine istemci isteğinde bulunmak için kullanılır.

(Devralındığı yer: WebClientProtocol)
Site

öğesini alır veya ayarlar ISiteComponent.

(Devralındığı yer: Component)
Timeout

XML Web hizmeti istemcisinin zaman uyumlu XML Web hizmeti isteğinin yanıtlanmasını beklediği süreyi gösterir (milisaniye cinsinden).

(Devralındığı yer: WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

İstemci, XML Web hizmetini barındıran Web sunucusuna bağlanmak için NTLM kimlik doğrulamasını kullandığında bağlantı paylaşımının etkinleştirilip etkinleştirilmediğini belirten bir değer alır veya ayarlar.

(Devralındığı yer: HttpWebClientProtocol)
Url

İstemcinin istediği XML Web hizmetinin temel URL'sini alır veya ayarlar.

(Devralındığı yer: WebClientProtocol)
UseDefaultCredentials

Özelliğin özelliğinin değerine ayarlanıp ayarlanmayacağını Credentials belirten bir değer DefaultCredentials alır veya ayarlar.

(Devralındığı yer: WebClientProtocol)
UserAgent

Her istekle birlikte gönderilen kullanıcı aracısı üst bilgisinin değerini alır veya ayarlar.

(Devralındığı yer: HttpWebClientProtocol)

Yöntemler

Abort()

XML Web hizmeti yöntemine yönelik isteği iptal eder.

(Devralındığı yer: WebClientProtocol)
CancelAsync(Object)

Çağrı zaten tamamlanmadığı sürece XML Web hizmeti yöntemine yönelik zaman uyumsuz çağrıyı iptal eder.

(Devralındığı yer: HttpWebClientProtocol)
CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

(Devralındığı yer: MarshalByRefObject)
Discover(String)

Bir bulma belgesi olup olmadığını belirlemek için sağlanan URL'yi bulur.

DiscoverAny(String)

Bir bulma belgesi, hizmet açıklaması veya XML Şema Tanımı (XSD) şeması olup olmadığını belirlemek için sağlanan URL'yi bulur.

Dispose()

Component tarafından kullanılan tüm kaynakları serbest bırakır.

(Devralındığı yer: Component)
Dispose(Boolean)

Component tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

(Devralındığı yer: Component)
Download(String)

Sağlanan URL'deki bulma belgesini bir Stream nesneye indirir.

Download(String, String)

Sağlanan URL'deki bulma belgesini bir Stream nesneye indirir ve parametresini bulma belgesinin MIME kodlamasına ayarlar contentType .

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

(Devralındığı yer: MarshalByRefObject)
GetService(Type)

veya tarafından ComponentContainersağlanan bir hizmeti temsil eden bir nesnesi döndürür.

(Devralındığı yer: Component)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
GetWebRequest(Uri)

Belirtilen URI için bir WebRequest oluşturur.

(Devralındığı yer: HttpWebClientProtocol)
GetWebResponse(WebRequest)

Xml Web hizmeti yöntemine zaman uyumlu istekten bir yanıt döndürür.

(Devralındığı yer: HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Xml Web hizmeti yöntemine zaman uyumsuz istekten bir yanıt döndürür.

(Devralındığı yer: HttpWebClientProtocol)
InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

(Devralındığı yer: MarshalByRefObject)
LoadExternals()
Geçersiz.

Nesnesine DiscoveryClientProtocol dış başvuruları yüklemesini emreder.

MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

(Devralındığı yer: MarshalByRefObject)
ReadAll(String)

bulma belgeleri, XML Şema Tanımı (XSD) şemaları ve dosyada başvurulan hizmet açıklamaları ile ve References özelliklerini dolduran Documents kaydedilmiş bulma belgelerinin eşlemesini içeren bir dosyada okur.

ResolveAll()

Bulma belgelerine, XML Şema Tanımı (XSD) şemalarına, özellikteki References hizmet açıklamalarına ve başvurulan bulma belgelerinde bulunan başvurulara yapılan tüm başvuruları çözümler.

ResolveOneLevel()

bulma belgelerine, içindeki XML Şema Tanımı (XSD) şemalarına ve hizmet açıklamalarına Referencesyapılan tüm başvuruların yanı sıra bu bulma belgelerinde bulunan başvuruları çözümler.

ToString()

Varsa, adını Componentiçeren bir String döndürür. Bu yöntem geçersiz kılınmamalıdır.

(Devralındığı yer: Component)
WriteAll(String, String)

Özelliğindeki Documents tüm bulma belgelerini, XML Şema Tanımı (XSD) şemalarını ve Hizmet Açıklamalarını sağlanan dizine yazar ve bu dizinde bir dosya oluşturur.

Ekinlikler

Disposed

Bileşen yöntemine Dispose() yapılan bir çağrı tarafından atıldığında gerçekleşir.

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.