Nyelv

DiscoveryClientProtocol Osztály

Definíció

Támogatja az XML-webszolgáltatások programozott meghívását.

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
Öröklődés

Példák

Az alábbi kódpéldát egy webes űrlap szemlélteti, amely bemutatja, hogyan használhatja az DiscoveryClientProtocol osztályt a névtér többi osztályával együtt az System.Web.Services.Discovery XML-webszolgáltatások felderítésének programozott meghívására. A példakód bemutatja a Discover, DiscoverAny, , DiscoverResolveAll, ResolveOneLevelReadAll és WriteAll metódusok használatát.

Important

Ebben a példában egy szövegdoboz található, amely elfogadja a felhasználói bemenetet, ami potenciális biztonsági fenyegetés. Alapértelmezés szerint ASP.NET weblapok ellenőrzik, hogy a felhasználói bevitel nem tartalmaz-e szkript- vagy HTML-elemeket. További információ: Szkript kihasználása – áttekintés.

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

Megjegyzések

Az XML-webszolgáltatás-felderítés egy vagy több, az elérhető XML-webszolgáltatásokat leíró kapcsolódó dokumentum keresésének vagy felderítésének folyamata. Az XML-webszolgáltatások felderítése révén az XML Web Service-ügyfelek megismerhetik az elérhető XML-webszolgáltatásokat egy adott URL-címen, és hogyan használhatják őket. Az XML-webszolgáltatások felderítése abból a helyszínről működik, hogy már beszerezte az URL-címet egy felderítési dokumentumhoz, esetleg egy címtárszolgáltatáson keresztül, azonban nem rendelkezik a kínált XML-webszolgáltatások részleteivel. Az XML-webszolgáltatások felderítése révén egy adott URL-címen található XML-webszolgáltatások részleteit fedezheti fel DiscoveryDocument .

Egy XML-webszolgáltatás-ügyfél elindítja az XML-webszolgáltatások felderítését egy URL-cím megadásával a metódusok vagy Discover a DiscoverAny metódusok számára. Ez az URL általában egy felderítési dokumentumra hivatkozik, amely egy vagy több XML-webszolgáltatást leíró dokumentumra hivatkozik, amelyek hozzáadódnak a References tulajdonsághoz. Ezen a ponton csak az a dokumentum lesz letöltve és ellenőrizve, hogy érvényes információkra mutasson az XML-webszolgáltatásokról. A dokumentumban található hivatkozások azonban ebben a szakaszban nem lesznek ellenőrizve. Ehelyett hozzáadja őket a References tulajdonsághoz. A hivatkozások érvényességének ellenőrzéséhez hívja meg azokat a ResolveAll metódusokat vagy ResolveOneLevel metódusokat, amelyek érvényes hivatkozott dokumentumokat adnak hozzá a Documents tulajdonsághoz. Végül, ha egy ügyfél lemezre szeretné menteni a felderítési eredményeket, hívja meg a metódust WriteAll .

Ha az XML-webszolgáltatások felderítéséhez nincs szükség programozott hozzáférésre, a Windows SDK a Web Services Discovery eszközt (Disco.exe) irányítja az XML-webszolgáltatások parancssoron belüli felderítéséhez. További részletekért lásd: Web Services Discovery Tool (Disco.exe).

Konstruktorok

Név Description
DiscoveryClientProtocol()

Inicializálja a DiscoveryClientProtocol osztály új példányát.

Tulajdonságok

Név Description
AdditionalInformation

A felderítési dokumentumban található hivatkozásokon kívül információkat is lekér.

AllowAutoRedirect

Lekérdezi vagy beállítja, hogy az ügyfél automatikusan követi-e a kiszolgáló átirányításait.

(Öröklődés forrása HttpWebClientProtocol)
CanRaiseEvents

Beolvas egy értéket, amely jelzi, hogy az összetevő képes-e eseményt létrehozni.

(Öröklődés forrása Component)
ClientCertificates

Lekéri az ügyféltanúsítványok gyűjteményét.

(Öröklődés forrása HttpWebClientProtocol)
ConnectionGroupName

Lekéri vagy beállítja a kérés kapcsolatcsoportjának nevét.

(Öröklődés forrása WebClientProtocol)
Container

Lekéri a IContainer .Component

(Öröklődés forrása Component)
CookieContainer

Lekéri vagy beállítja a cookie-k gyűjtését.

(Öröklődés forrása HttpWebClientProtocol)
Credentials

Lekéri vagy beállítja a biztonsági hitelesítő adatokat az XML Web Service-ügyfélhitelesítéshez.

(Öröklődés forrása WebClientProtocol)
DesignMode

Olyan értéket kap, amely jelzi, hogy az Component aktuálisan tervezési módban van-e.

(Öröklődés forrása Component)
Documents

Lekéri a felderítési dokumentumok gyűjteményét.

EnableDecompression

Lekéri vagy beállít egy értéket, amely jelzi, hogy engedélyezve van-e a dekompresszió ehhez HttpWebClientProtocola beállításhoz.

(Öröklődés forrása HttpWebClientProtocol)
Errors

Lekéri az osztályból a metódus meghívása során előforduló kivételek gyűjteményét.

Events

Lekéri az ehhez Componentcsatolt eseménykezelők listáját.

(Öröklődés forrása Component)
PreAuthenticate

Lekérdezi vagy beállítja, hogy engedélyezve van-e az előzetes hitelesítés.

(Öröklődés forrása WebClientProtocol)
Proxy

Lekéri vagy beállítja a proxyadatokat egy XML-webszolgáltatás-kérés tűzfalon keresztüli létrehozásához.

(Öröklődés forrása HttpWebClientProtocol)
References

A feloldott felderítési dokumentumokban található hivatkozások gyűjteménye.

RequestEncoding

Az Encoding ügyfél kérésének az XML-webszolgáltatáshoz való küldéséhez használt.

(Öröklődés forrása WebClientProtocol)
Site

Lekéri vagy megadja a ISite értékét a Component-hez.

(Öröklődés forrása Component)
Timeout

Azt az időt jelzi, amikor egy XML-webszolgáltatás-ügyfél megvárja a szinkron XML-webszolgáltatás-kérésre adott választ (ezredmásodpercben).

(Öröklődés forrása WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

Lekéri vagy beállít egy értéket, amely jelzi, hogy engedélyezve van-e a kapcsolatmegosztás, ha az ügyfél NTLM-hitelesítéssel csatlakozik az XML-webszolgáltatást futtató webkiszolgálóhoz.

(Öröklődés forrása HttpWebClientProtocol)
Url

Lekéri vagy beállítja az ügyfél által kért XML-webszolgáltatás alap URL-címét.

(Öröklődés forrása WebClientProtocol)
UseDefaultCredentials

Lekéri vagy beállít egy értéket, amely jelzi, hogy a Credentials tulajdonságot a tulajdonság értékére DefaultCredentials szeretné-e állítani.

(Öröklődés forrása WebClientProtocol)
UserAgent

Lekéri vagy beállítja az egyes kérésekkel elküldött felhasználói ügynök fejlécének értékét.

(Öröklődés forrása HttpWebClientProtocol)

Metódusok

Név Description
Abort()

Megszakítja egy XML-webszolgáltatás-metódusra irányuló kérést.

(Öröklődés forrása WebClientProtocol)
CancelAsync(Object)

Megszakítja az XML-webszolgáltatás metódusának aszinkron hívását, kivéve, ha a hívás már befejeződött.

(Öröklődés forrása HttpWebClientProtocol)
CreateObjRef(Type)

Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt.

(Öröklődés forrása MarshalByRefObject)
Discover(String)

Felderíti a megadott URL-címet annak megállapításához, hogy felderítési dokumentum-e.

DiscoverAny(String)

Felderíti a megadott URL-címet annak megállapításához, hogy felderítési dokumentumról, szolgáltatásleírásról vagy XSD-sémáról van-e szó.

Dispose()

Felszabadítja a .-hez használt összes erőforrást Component.

(Öröklődés forrása Component)
Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által Component használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

(Öröklődés forrása Component)
Download(String, String)

Letölti a felderítési dokumentumot a megadott URL-címen egy Stream objektumba, és beállítja a contentType paramétert a felderítési dokumentum MIME-kódolására.

Download(String)

Letölti a felderítési dokumentumot a megadott URL-címen egy Stream objektumba.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetLifetimeService()
Elavult.

Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot.

(Öröklődés forrása MarshalByRefObject)
GetService(Type)

Olyan objektumot ad vissza, amely az általa vagy annak által ComponentContainernyújtott szolgáltatást jelöli.

(Öröklődés forrása Component)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetWebRequest(Uri)

Létrehoz egy adott WebRequest URI-t.

(Öröklődés forrása HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Aszinkron kérés válaszát adja vissza egy XML Web Service-metódusnak.

(Öröklődés forrása HttpWebClientProtocol)
GetWebResponse(WebRequest)

Egy xml-webszolgáltatás-metódusra irányuló szinkron kérés válaszát adja vissza.

(Öröklődés forrása HttpWebClientProtocol)
InitializeLifetimeService()
Elavult.

Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához.

(Öröklődés forrása MarshalByRefObject)
LoadExternals()
Elavult.

Arra utasítja az DiscoveryClientProtocol objektumot, hogy töltse be a külső hivatkozásokat.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MemberwiseClone(Boolean)

Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre.

(Öröklődés forrása MarshalByRefObject)
ReadAll(String)

Beolvassa egy fájlba, amely a mentett felderítési dokumentumok térképét tartalmazza, amelyek feltöltik azokat Documents és References a tulajdonságokat, felderítési dokumentumokkal, XML-sémadefiníciós (XSD) sémákkal és a fájlban hivatkozott szolgáltatásleírásokkal.

ResolveAll()

Feloldja a felderítési dokumentumokra, az XML-sémadefiníciós (XSD) sémákra és a tulajdonság szolgáltatásleírására, valamint a References hivatkozott felderítési dokumentumokban található hivatkozásokra mutató hivatkozásokat.

ResolveOneLevel()

Feloldja a felderítési dokumentumokra, az XML-sémadefiníciós (XSD)-sémákra és a szolgáltatásleírásokra Referencesmutató összes hivatkozást, valamint a felderítési dokumentumokban található hivatkozásokat.

ToString()

String A ( ha van) nevet tartalmazó értéket Componentad vissza. Ezt a módszert nem szabad felülírni.

(Öröklődés forrása Component)
WriteAll(String, String)

A tulajdonságban Documents található összes felderítési dokumentumot, XML-sémadefiníciós (XSD) sémát és szolgáltatásleírást a megadott könyvtárba írja, és létrehoz egy fájlt az adott könyvtárban.

esemény

Név Description
Disposed

Akkor fordul elő, ha az összetevőt a metódus hívása megsemmisíti Dispose() .

(Öröklődés forrása Component)

A következőre érvényes:

Lásd még