Поделиться через


Как использовать MetadataExchangeClient для получения метаданных

Используйте класс MetadataExchangeClient для загрузки метаданных по протоколу WS-MetadataExchange (MEX). Извлеченные файлы метаданных возвращаются в виде объекта MetadataSet. Возвращенный объект MetadataSet содержит коллекцию объектов MetadataSection, каждый из которых содержит конкретный диалект метаданных и идентификатор. Возвращенные метаданные можно записать в файлы или (если метаданные содержат документы WSDL) импортировать с помощью WsdlImporter.

Конструкторы MetadataExchangeClient, получающие адрес, используют привязку в статическом классе MetadataExchangeBindings, который соответствует схеме универсального кода ресурса (URI) этого адреса. В качестве альтернативы можно использовать конструктор MetadataExchangeClient, позволяющий явно задать используемую привязку. Заданная привязка применяется для распознавания всех ссылок на метаданные.

Подобно любому другому клиенту Windows Communication Foundation (WCF), тип MetadataExchangeClient предоставляет конструктор для загрузки конфигураций клиентских конечных точек с использованием имени конфигурации конечной точки. Заданная конфигурация конечной точки должна определять контракт IMetadataExchange. Адрес в конфигурации конечной точки не загружается, поэтому следует использовать одну из перегрузок GetMetadata, которые получают адрес. При задании адреса метаданных с помощью экземпляра EndpointAddress клиент MetadataExchangeClient предполагает, что этот адрес соответствует конечной точке MEX. Если адрес метаданных задается в виде URL-адреса, необходимо также задать используемый режим MetadataExchangeClientMode — MEX или HTTP GET.

ms729834.Important(ru-ru,VS.100).gif Примечание
По умолчанию MetadataExchangeClient распознает все ссылки, включая импорт WSDL, а также импорт схемы XML и включаемые элементы. Эту функцию можно отключить, задав для свойства ResolveMetadataReferences значение false. Максимальным количеством распознаваемых ссылок можно управлять с помощью свойства MaximumResolvedReferences. Это свойство можно использовать совместно со свойством MaxReceivedMessageSize в привязке для управления объемом извлекаемых метаданных.

Использование MetadataExchangeClient для получения метаданных

  1. Создайте новый объект MetadataExchangeClient, явно задав привязку, имя конфигурации конечной точки или адрес метаданных.

  2. Настройте MetadataExchangeClient в соответствии с требованиями. Например, можно задать учетные данные, которые должны использоваться при запросе метаданных, указать способ распознавания ссылок на метаданные и задать свойство OperationTimeout для определения времени ожидания ответа на запрос метаданных.

  3. Получите объект MetadataSet, который содержит извлеченные метаданные, вызвав один из методов GetMetadata. Обратите внимание, что если при создании MetadataExchangeClient явно задан адрес, можно использовать только перегрузку GetMetadata, которая не получает аргументов.

Пример

В следующем коде показано использование MetadataExchangeClient для загрузки и перечисления файлов метаданных.

Компиляция кода

Чтобы скомпилировать этот пример кода, необходимо сделать ссылку на сборку System.ServiceModel.dll и импортировать пространство имен System.ServiceModel.Description.

См. также

Справочник

MetadataResolver
MetadataExchangeClient
WsdlImporter