DiscoveryClientProtocol Klass

Definition

Ger stöd för att programmatiskt anropa XML-webbtjänstidentifiering.

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
Arv

Exempel

Följande kodexempel är ett webbformulär som visar hur du använder DiscoveryClientProtocol klassen tillsammans med de andra klasserna i System.Web.Services.Discovery namnområdet för att programmatiskt anropa XML-webbtjänstidentifiering. Kodexemplet visar hur du använder Discovermetoderna , DiscoverAny, Discover, ResolveAll, ResolveOneLevelReadAll och WriteAll .

Important

Det här exemplet har en textruta som accepterar användarindata, vilket är ett potentiellt säkerhetshot. Som standard kontrollerar ASP.NET webbsidor att användarindata inte innehåller skript- eller HTML-element. Mer information finns i Översikt över skriptexploateringar.

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

Kommentarer

XML-webbtjänstidentifiering är processen att hitta eller identifiera ett eller flera relaterade dokument som beskriver tillgängliga XML-webbtjänster. Det är genom IDENTIFIERING av XML-webbtjänster som XML-webbtjänstklienter lär sig mer om tillgängliga XML-webbtjänster vid en viss URL och hur de används. IDENTIFIERING av XML-webbtjänster fungerar från den lokala plats där du redan har hämtat URL:en till ett identifieringsdokument, eventuellt via en katalogtjänst, men du har inte informationen om de XML-webbtjänster som erbjuds. Genom identifiering av XML-webbtjänster kan du identifiera information om XML-webbtjänster som anges i en DiscoveryDocument på en specifik URL.

En XML-webbtjänstklient startar XML-webbtjänstidentifiering genom att ange en URL till antingen Discover metoderna eller DiscoverAny . Den här URL:en refererar vanligtvis till ett identifieringsdokument som i sin tur refererar till dokument som beskriver en eller flera XML-webbtjänster som läggs till i References egenskapen. Då laddas endast dokumentet ned och verifieras för att peka på giltig information om XML-webbtjänster. Referenserna i dokumentet verifieras dock inte i det här skedet. I stället läggs de till i egenskapen References . Om du vill kontrollera att referenserna är giltiga anropar ResolveAll du metoderna eller ResolveOneLevel som lägger till giltiga refererade dokument i Documents egenskapen. Om en klient slutligen vill spara identifieringsresultatet på disken anropar du WriteAll metoden.

Om programmatisk åtkomst till XML-webbtjänster inte behövs, skickar Windows SDK verktyget Web Services Discovery (Disco.exe) för identifiering av XML-webbtjänster i en kommandotolk. Mer information finns i Web Services Discovery Tool (Disco.exe).

Konstruktorer

Name Description
DiscoveryClientProtocol()

Initierar en ny instans av DiscoveryClientProtocol klassen.

Egenskaper

Name Description
AdditionalInformation

Hämtar information utöver referenser som finns i identifieringsdokumentet.

AllowAutoRedirect

Hämtar eller anger om klienten automatiskt följer serveromdirigeringar.

(Ärvd från HttpWebClientProtocol)
CanRaiseEvents

Hämtar ett värde som anger om komponenten kan generera en händelse.

(Ärvd från Component)
ClientCertificates

Hämtar samlingen med klientcertifikat.

(Ärvd från HttpWebClientProtocol)
ConnectionGroupName

Hämtar eller anger namnet på anslutningsgruppen för begäran.

(Ärvd från WebClientProtocol)
Container

Hämtar som IContainer innehåller Component.

(Ärvd från Component)
CookieContainer

Hämtar eller anger insamling av cookies.

(Ärvd från HttpWebClientProtocol)
Credentials

Hämtar eller anger säkerhetsautentiseringsuppgifter för XML-webbtjänstklientautentisering.

(Ärvd från WebClientProtocol)
DesignMode

Hämtar ett värde som anger om det Component för närvarande är i designläge.

(Ärvd från Component)
Documents

Hämtar en samling identifieringsdokument.

EnableDecompression

Hämtar eller anger ett värde som anger om dekomprimering är aktiverat för detta HttpWebClientProtocol.

(Ärvd från HttpWebClientProtocol)
Errors

Hämtar en samling undantag som inträffade under anrop av metoden från den här klassen.

Events

Hämtar listan över händelsehanterare som är kopplade till den här Component.

(Ärvd från Component)
PreAuthenticate

Hämtar eller anger om förautentisering är aktiverat.

(Ärvd från WebClientProtocol)
Proxy

Hämtar eller anger proxyinformation för att göra en XML-webbtjänstbegäran via en brandvägg.

(Ärvd från HttpWebClientProtocol)
References

En samling referenser som finns i lösta identifieringsdokument.

RequestEncoding

Används Encoding för att göra klientbegäran till XML-webbtjänsten.

(Ärvd från WebClientProtocol)
Site

Hämtar eller ställer in ISite i Component.

(Ärvd från Component)
Timeout

Anger den tid då en XML-webbtjänstklient väntar på att svaret på en synkron XML-webbtjänstbegäran ska tas emot (i millisekunder).

(Ärvd från WebClientProtocol)
UnsafeAuthenticatedConnectionSharing

Hämtar eller anger ett värde som anger om anslutningsdelning är aktiverat när klienten använder NTLM-autentisering för att ansluta till den webbserver som är värd för XML-webbtjänsten.

(Ärvd från HttpWebClientProtocol)
Url

Hämtar eller anger bas-URL:en för DEN XML-webbtjänst som klienten begär.

(Ärvd från WebClientProtocol)
UseDefaultCredentials

Hämtar eller anger ett värde som anger om egenskapen ska anges Credentials till egenskapens DefaultCredentials värde.

(Ärvd från WebClientProtocol)
UserAgent

Hämtar eller anger värdet för användaragenthuvudet som skickas med varje begäran.

(Ärvd från HttpWebClientProtocol)

Metoder

Name Description
Abort()

Avbryter en begäran till en XML-webbtjänstmetod.

(Ärvd från WebClientProtocol)
CancelAsync(Object)

Avbryter ett asynkront anrop till en XML-webbtjänstmetod, såvida inte anropet redan har slutförts.

(Ärvd från HttpWebClientProtocol)
CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
Discover(String)

Identifierar den angivna URL:en för att avgöra om det är ett identifieringsdokument.

DiscoverAny(String)

Identifierar den angivna URL:en för att avgöra om det är ett identifieringsdokument, en tjänstbeskrivning eller ett XSD-schema (XML Schema Definition).

Dispose()

Släpper alla resurser som används av Component.

(Ärvd från Component)
Dispose(Boolean)

Släpper de ohanterade resurser som används av Component och släpper eventuellt de hanterade resurserna.

(Ärvd från Component)
Download(String, String)

Laddar ned identifieringsdokumentet på den angivna URL:en till ett Stream objekt och anger parametern contentType till MIME-kodningen för identifieringsdokumentet.

Download(String)

Laddar ned identifieringsdokumentet på den angivna URL:en till ett Stream objekt.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetService(Type)

Returnerar ett objekt som representerar en tjänst som tillhandahålls av Component eller av dess Container.

(Ärvd från Component)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
GetWebRequest(Uri)

Skapar en WebRequest för den angivna URI:n.

(Ärvd från HttpWebClientProtocol)
GetWebResponse(WebRequest, IAsyncResult)

Returnerar ett svar från en asynkron begäran till en XML-webbtjänstmetod.

(Ärvd från HttpWebClientProtocol)
GetWebResponse(WebRequest)

Returnerar ett svar från en synkron begäran till en XML-webbtjänstmetod.

(Ärvd från HttpWebClientProtocol)
InitializeLifetimeService()

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
LoadExternals()
Föråldrad.

Instruerar objektet DiscoveryClientProtocol att läsa in eventuella externa referenser.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
ReadAll(String)

Läser i en fil som innehåller en karta över sparade identifieringsdokument som fyller Documents i egenskaperna och References med identifieringsdokument, XSD-schemascheman (XML Schema Definition) och tjänstbeskrivningar som refereras i filen.

ResolveAll()

Löser alla referenser till identifieringsdokument, XSD-scheman (XML Schema Definition) och tjänstbeskrivningar i References egenskapen samt referenser som finns i refererade identifieringsdokument.

ResolveOneLevel()

Löser alla referenser till identifieringsdokument, XSD-scheman (XML Schema Definition) och tjänstbeskrivningar i References, samt referenser som finns i dessa identifieringsdokument.

ToString()

Returnerar ett String som innehåller namnet på Component, om det finns. Den här metoden bör inte åsidosättas.

(Ärvd från Component)
WriteAll(String, String)

Skriver alla identifieringsdokument, XSD-scheman (XML Schema Definition) och Tjänstbeskrivningar i Documents egenskapen till den angivna katalogen och skapar en fil i katalogen.

Händelser

Name Description
Disposed

Inträffar när komponenten tas bort av ett anrop till Dispose() metoden.

(Ärvd från Component)

Gäller för

Se även