DiscoveryClientProtocol Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Dá suporte para invocar programaticamente a descoberta de serviços 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
- Herança
Exemplos
O exemplo de código a System.Web.Services.Discovery seguir é um Web Form que demonstra como usar a DiscoveryClientProtocol classe junto com as outras classes no namespace para invocar programaticamente a descoberta de serviços Web XML. O exemplo de código demonstra o uso dos Discovermétodos , DiscoverAny, ResolveAllDiscover, , ResolveOneLevelReadAll e WriteAll .
Importante
Este exemplo tem uma caixa de texto que aceita a entrada do usuário, que é uma possível ameaça à segurança. Por padrão, ASP.NET páginas da Web validam que a entrada do usuário não inclui elementos html ou script. Para obter mais informações, consulte Visão geral de explorações de script.
<%@ 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>
Comentários
A descoberta de serviço Web XML é o processo de localizar ou descobrir um ou mais documentos relacionados que descrevem os serviços Web XML disponíveis. É por meio da descoberta de serviços Web XML que os clientes de serviço Web XML aprendem sobre os serviços Web XML disponíveis em uma determinada URL e como usá-los. A descoberta de serviços Web XML funciona do local em que você já obteve a URL para um documento de descoberta, possivelmente por meio de um serviço de diretório. No entanto, você não tem os detalhes sobre os serviços Web XML oferecidos. Por meio da descoberta de serviços Web XML, você pode descobrir os detalhes sobre os serviços Web XML listados em um DiscoveryDocument em uma URL específica.
Um cliente de serviço Web XML inicia a descoberta de serviços Web XML fornecendo uma URL para os Discover métodos ou DiscoverAny . Normalmente, essa URL se refere a um documento de descoberta, que, por sua vez, se refere a documentos que descrevem um ou mais serviços Web XML, que são adicionados à References propriedade . Nesse ponto, somente esse documento é baixado e verificado para apontar para informações válidas sobre serviços Web XML. No entanto, as referências contidas nesse documento não são verificadas nesta fase. Em vez disso, eles são adicionados à References propriedade . Para verificar se as referências são válidas, invoque os ResolveAll métodos ou ResolveOneLevel , que adicionam documentos referenciados válidos à Documents propriedade . Por fim, se um cliente quiser salvar os resultados da descoberta no disco, invoque o WriteAll método .
Se o acesso programático à descoberta de serviços Web XML não for necessário, o SDK do Windows enviará a ferramenta descoberta de serviços Web (Disco.exe) para descobrir serviços Web XML em um prompt de comando. Para obter mais detalhes, consulte Ferramenta de Descoberta de Serviços Web (Disco.exe).
Construtores
DiscoveryClientProtocol() |
Inicializa uma nova instância da classe DiscoveryClientProtocol. |
Propriedades
AdditionalInformation |
Obtém informações além das referências encontradas no documento de descoberta. |
AllowAutoRedirect |
Obtém ou define se o cliente segue automaticamente redirecionamentos do servidor. (Herdado de HttpWebClientProtocol) |
CanRaiseEvents |
Obtém um valor que indica se o componente pode acionar um evento. (Herdado de Component) |
ClientCertificates |
Obtém a coleção de certificados do cliente. (Herdado de HttpWebClientProtocol) |
ConnectionGroupName |
Obtém ou define o nome do grupo de conexões para a solicitação. (Herdado de WebClientProtocol) |
Container |
Obtém o IContainer que contém o Component. (Herdado de Component) |
CookieContainer |
Obtém ou define a coleção de cookies. (Herdado de HttpWebClientProtocol) |
Credentials |
Obtém ou define as credenciais de segurança para a autenticação de cliente do serviço Web XML. (Herdado de WebClientProtocol) |
DesignMode |
Obtém um valor que indica se o Component está no modo de design no momento. (Herdado de Component) |
Documents |
Obtém uma coleção de documentos de descoberta. |
EnableDecompression |
Obtém ou define um valor que indica se a descompactação está habilitada para este HttpWebClientProtocol. (Herdado de HttpWebClientProtocol) |
Errors |
Obtém uma coleção de exceções que ocorreram durante a invocação do método desta classe. |
Events |
Obtém a lista de manipuladores de eventos que estão anexados a este Component. (Herdado de Component) |
PreAuthenticate |
Obtém ou define se a pré-autenticação está habilitada. (Herdado de WebClientProtocol) |
Proxy |
Obtém ou define informações de proxy para fazer uma solicitação de serviço Web XML por um firewall. (Herdado de HttpWebClientProtocol) |
References |
Uma coleção de referências encontradas em documentos de descoberta resolvido. |
RequestEncoding |
O Encoding usado para fazer a solicitação do cliente para o serviço Web XML. (Herdado de WebClientProtocol) |
Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
Timeout |
Indica o tempo que um cliente do serviço Web XML aguarda a resposta até que uma solicitação síncrona de serviço Web XML seja recebida (em milissegundos). (Herdado de WebClientProtocol) |
UnsafeAuthenticatedConnectionSharing |
Obtém ou define um valor que indica se o compartilhamento de conexão está habilitado quando o cliente usa a autenticação NTLM para se conectar ao servidor Web que hospeda o serviço Web XML. (Herdado de HttpWebClientProtocol) |
Url |
Obtém ou define a URL base do serviço Web XML que está sendo solicitada pelo cliente. (Herdado de WebClientProtocol) |
UseDefaultCredentials |
Obtém ou define um valor que indica se deseja definir a propriedade Credentials para o valor da propriedade DefaultCredentials. (Herdado de WebClientProtocol) |
UserAgent |
Obtém ou define o valor para o cabeçalho de agente do usuário enviado com cada solicitação. (Herdado de HttpWebClientProtocol) |
Métodos
Abort() |
Cancela uma solicitação para um método de serviço Web XML. (Herdado de WebClientProtocol) |
CancelAsync(Object) |
Cancela uma chamada assíncrona para um método de serviço Web XML, a menos que a chamada já tenha sido concluída. (Herdado de HttpWebClientProtocol) |
CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
Discover(String) |
Descobre a URL fornecida para determinar se é um documento de descoberta. |
DiscoverAny(String) |
Descobre a URL fornecida para determinar se ela é um documento de descoberta, uma descrição do serviço ou um esquema de definição de esquema de XSD (definição de esquema XML). |
Dispose() |
Libera todos os recursos usados pelo Component. (Herdado de Component) |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo Component e opcionalmente libera os recursos gerenciados. (Herdado de Component) |
Download(String) |
Baixa o documento de descoberta na URL fornecida em um objeto Stream. |
Download(String, String) |
Baixa o documento de descoberta na URL fornecida em um objeto Stream, configurando o parâmetro |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância. (Herdado de MarshalByRefObject) |
GetService(Type) |
Retorna um objeto que representa um serviço fornecido pelo Component ou pelo seu Container. (Herdado de Component) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
GetWebRequest(Uri) |
Cria um WebRequest para o URI especificado. (Herdado de HttpWebClientProtocol) |
GetWebResponse(WebRequest) |
Retorna uma resposta de uma solicitação síncrona para um método de serviço Web XML. (Herdado de HttpWebClientProtocol) |
GetWebResponse(WebRequest, IAsyncResult) |
Retorna uma resposta de uma solicitação assíncrona para um método de serviço Web XML. (Herdado de HttpWebClientProtocol) |
InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
LoadExternals() |
Obsoleto.
Instrui o objeto DiscoveryClientProtocol a carregar quaisquer referências externas. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject) |
ReadAll(String) |
Lê um arquivo que contém um mapa de documentos de descoberta salvo populando as propriedades Documents e References com documentos de descoberta, esquemas de XSD (definição de esquema XML) e descrições do serviço referenciadas no arquivo. |
ResolveAll() |
Resolve todas as referências a documentos de descoberta, esquemas de XSD (definição de esquema XML) e descrições de serviços na propriedade References, bem como referências encontradas nos documentos de descoberta referenciados. |
ResolveOneLevel() |
Resolve todas as referências a documentos de descoberta, esquemas de XSD (definição de esquema XML) e descrições de serviços em References, bem como referências encontradas nesses documentos de descoberta. |
ToString() |
Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído. (Herdado de Component) |
WriteAll(String, String) |
Grava todos os documentos de descoberta, esquemas de XSD (definição de esquema XML) e descrições de serviços na propriedade Documents para o diretório fornecido e cria um arquivo nesse diretório. |
Eventos
Disposed |
Ocorre quando o componente é disposto por uma chamada ao método Dispose(). (Herdado de Component) |