DiscoveryClientProtocol Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обеспечивает поддержку для программного вызова обнаружения веб-служб 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
- Наследование
Примеры
В следующем примере кода показана веб-форма, демонстрирующая использование DiscoveryClientProtocol класса вместе с другими классами в System.Web.Services.Discovery пространстве имен для программного вызова обнаружения веб-служб XML. В примере кода демонстрируется Discoverиспользование методов , DiscoverAny, Discover, ResolveAll, ResolveOneLevelи ReadAllWriteAll .
Важно!
В этом примере имеется текстовое поле, принимающее вводимые пользователем данные, что является потенциальной угрозой безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.
<%@ 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>
Комментарии
Обнаружение веб-службы XML — это процесс поиска или обнаружения одного или нескольких связанных документов, описывающих доступные веб-службы XML. Именно с помощью обнаружения веб-служб XML клиенты веб-служб XML узнают о доступных веб-службах XML по заданному URL-адресу и о том, как их использовать. Обнаружение веб-служб XML выполняется из того, что вы уже получили URL-адрес документа обнаружения, возможно, через службу каталогов, однако у вас нет сведений о предлагаемых веб-службах XML. С помощью обнаружения веб-служб XML можно получить сведения о веб-службах XML, перечисленных в DiscoveryDocument , по определенному URL-адресу.
Клиент веб-службы XML запускает обнаружение веб-служб XML, предоставляя URL-адрес Discover методам или DiscoverAny . Как правило, этот URL-адрес ссылается на документ обнаружения, который, в свою очередь, ссылается на документы, описывающие одну или несколько веб-служб XML, которые добавляются в References свойство . На этом этапе загружается и проверяется только этот документ, указывающий на допустимые сведения о веб-службах XML. Однако ссылки, содержащиеся в этом документе, на данном этапе не проверяются. Вместо этого они добавляются в References свойство . Чтобы убедиться, что ссылки являются допустимыми, вызовите ResolveAll методы или ResolveOneLevel , которые добавляют допустимые документы, на которые имеются ссылки, в Documents свойство . Наконец, если клиент хочет сохранить результаты обнаружения на диске, вызовите WriteAll метод .
Если программный доступ к обнаружению веб-служб XML не требуется, windows SDK поставляет средство обнаружения веб-служб (Disco.exe) для обнаружения веб-служб XML в командной строке. Дополнительные сведения см. в статье Средство обнаружения веб-служб (Disco.exe).
Конструкторы
DiscoveryClientProtocol() |
Инициализирует новый экземпляр класса DiscoveryClientProtocol. |
Свойства
AdditionalInformation |
Получает сведения в дополнение к ссылкам, найденным в документе обнаружения. |
AllowAutoRedirect |
Получает или задает возможность клиента автоматически следовать перенаправлениям сервера. (Унаследовано от HttpWebClientProtocol) |
CanRaiseEvents |
Возвращает значение, показывающее, может ли компонент вызывать событие. (Унаследовано от Component) |
ClientCertificates |
Получает коллекцию сертификатов клиента. (Унаследовано от HttpWebClientProtocol) |
ConnectionGroupName |
Возвращает или задает имя группы подключения для запроса. (Унаследовано от WebClientProtocol) |
Container |
Возвращает объект IContainer, который содержит коллекцию Component. (Унаследовано от Component) |
CookieContainer |
Получает или задает коллекцию файлов Cookie. (Унаследовано от HttpWebClientProtocol) |
Credentials |
Получает или задает учетные данные безопасности для проверки подлинности клиента веб-службы XML. (Унаследовано от WebClientProtocol) |
DesignMode |
Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. (Унаследовано от Component) |
Documents |
Получает коллекцию документов обнаружения. |
EnableDecompression |
Получает или задает значение, указывающее, включено ли сжатие для данного объекта HttpWebClientProtocol. (Унаследовано от HttpWebClientProtocol) |
Errors |
Получает коллекцию исключений, произошедших во время вызова метода из данного класса. |
Events |
Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Унаследовано от Component) |
PreAuthenticate |
Получает или задает признак включения предварительной проверки подлинности. (Унаследовано от WebClientProtocol) |
Proxy |
Получает или задает информацию о прокси для выполнения запроса веб-службы XML через брандмауэр. (Унаследовано от HttpWebClientProtocol) |
References |
Коллекция ссылок, найденных в разрешенных документах обнаружения. |
RequestEncoding |
Класс Encoding используется для выполнения клиентского запроса к веб-службе XML. (Унаследовано от WebClientProtocol) |
Site |
Получает или задает ISite объекта Component. (Унаследовано от Component) |
Timeout |
Указывает время (в миллисекундах), в течение которого клиент XML-веб-службы ждет ответа на синхронный запрос XML-веб-службы. (Унаследовано от WebClientProtocol) |
UnsafeAuthenticatedConnectionSharing |
Получает или задает значение, указывающее, включено ли совместное использование подключения при работе клиента со средствами проверки подлинности NTLM для соединения с веб-сервером, на котором размещается веб-служба XML. (Унаследовано от HttpWebClientProtocol) |
Url |
Получает или задает URL-адрес веб-службы XML, запрашиваемой клиентом. (Унаследовано от WebClientProtocol) |
UseDefaultCredentials |
Получает или задает значение, указывающее, должно ли для свойства Credentials устанавливаться значение свойства DefaultCredentials. (Унаследовано от WebClientProtocol) |
UserAgent |
Получает или задает значение заголовка агента пользователя, посылаемого с каждым запросом. (Унаследовано от HttpWebClientProtocol) |
Методы
Abort() |
Отменяет запрос к методу веб-службы XML. (Унаследовано от WebClientProtocol) |
CancelAsync(Object) |
Отменяет асинхронный вызов к методу веб-службы XML, если вызов еще не завершен. (Унаследовано от HttpWebClientProtocol) |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Discover(String) |
Обнаруживает указанный URL-адрес и определяет, является ли он документом обнаружения. |
DiscoverAny(String) |
Обнаруживает указанный URL-адрес, чтобы определить, является ли он документом обнаружения, описанием службы или схемой определения схемы XML (XSD). |
Dispose() |
Освобождает все ресурсы, занятые модулем Component. (Унаследовано от Component) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы. (Унаследовано от Component) |
Download(String) |
Загружает документ обнаружения, расположенный по указанному URL-адресу, в объект Stream. |
Download(String, String) |
Загружает документ обнаружения, расположенный по указанному URL-адресу, в объект Stream, при этом для параметра |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetLifetimeService() |
Устаревшие..
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetService(Type) |
Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container. (Унаследовано от Component) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
GetWebRequest(Uri) |
Создает объект WebRequest для указанного URI-кода. (Унаследовано от HttpWebClientProtocol) |
GetWebResponse(WebRequest) |
Возвращает ответ на синхронный запрос к методу веб-службы XML. (Унаследовано от HttpWebClientProtocol) |
GetWebResponse(WebRequest, IAsyncResult) |
Возвращает ответ на асинхронный запрос метода веб-службы XML. (Унаследовано от HttpWebClientProtocol) |
InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
LoadExternals() |
Устаревшие..
Указывает объекту DiscoveryClientProtocol на необходимость загрузки всех внешних ссылок. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
ReadAll(String) |
Считывает файл, содержащий карту сохраненных документов обнаружения, и заполняет свойства Documents и References документами обнаружения, схемами определения схемы XML (XSD) и описаниями служб, на которые этот файл содержит ссылки. |
ResolveAll() |
Разрешает все ссылки на документы обнаружения, схемы определения схем XML (XSD) и описания служб в свойстве References, а также ссылки, найденные в этих документах обнаружения. |
ResolveOneLevel() |
Разрешает все ссылки на документы обнаружения, схемы определения схем XML (XSD) и описания служб в свойстве References, а также ссылки, найденные в этих документах обнаружения. |
ToString() |
Возвращает объект String, содержащий имя Component, если оно есть. Этот метод не следует переопределять. (Унаследовано от Component) |
WriteAll(String, String) |
Записывает все документы обнаружения, схемы определения схем XML (XSD) и описания служб из свойства Documents в указанный каталог и создает файл в этом каталоге. |
События
Disposed |
Возникает при удалении компонента путем вызова метода Dispose(). (Унаследовано от Component) |