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


Создание клиента WCF из метаданных службы

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

Документы метаданных могут находиться в устойчивом хранилище или извлекаться в оперативном режиме. Извлечение в оперативном режиме происходит либо по протоколу WS-MetadataExchange, либо по протоколу Microsoft Discovery (DISCO). Svcutil.exe одновременно отправляет следующие запросы метаданных для извлечения метаданных:

  • запрос WS-MetadataExchange (MEX) по указанному адресу;

  • запрос MEX с присоединенным ключом /mex по указанному адресу;

  • запрос DISCO (с использованием класса DiscoveryClientProtocol из веб-служб ASP.NET) по указанному адресу.

Программа Svcutil.exe формирует клиент на основании файла WSDL или файла политики, полученного от службы. Имя участника-пользователя формируется путем добавления к имени пользователя символа "@" и полного доменного имени. Однако для пользователей, зарегистрированных в Active Directory, этот формат допустимыми не является, и сформированное Svcutil.exe имя участника-пользователя вызывает сбой с выдачей следующего сообщения об ошибке: Попытка входа в систему неудачна. Чтобы устранить эту проблему, необходимо вручную откорректировать файл клиента, сформированный Svcutil.exe.

svcutil.exe [/t:code]  <metadataDocumentPath>* | <url>* | <epr>

Ссылки на типы и совместное использование типов

Параметр Описание

/reference:<file path>

Ссылается на типы в заданной сборке. При создании клиентов необходимо использовать этот параметр для задания сборок, которые могут содержать типы, представляющие импортируемые метаданные.

Краткая форма: /r

/excludeType:<type>

Задает полное имя типа или имя типа с указанием на сборку, который необходимо исключить из ссылочных типов контракта.

Краткая форма: /et

Выбор сериализатора

Параметр Описание

/serializer:Auto

Автоматически выбирает сериализатор. Выбираемый сериализатор — DataContract. Если использовать этот сериализатор не удается, используется сериализатор XmlSerializer.

Краткая форма: /ser:Auto

/serializer:DataContractSerializer

Формирует типы данных, использующих для сериализации и десериализации сериализатор DataContract.

Краткая форма: /ser:DataContractSerializer

/serializer:XmlSerializer

Формирует типы данных, использующих для сериализации и десериализации сериализатор XmlSerializer.

Краткая форма: /ser:XmlSerializer

/importXmlTypes

Настраивает сериализатор DataContract на импорт типов, отличных от DataContract, в виде типов IXmlSerializable.

Краткая форма: /ixt

/dataContractOnly

Формирует код только для типов DataContract. Формируются типы ServiceContract.

Для этого параметра следует задавать только локальные файлы метаданных.

Краткая форма: /dconly

Выбор языка для клиента

Параметр Описание

/language:<language>

Задает язык программирования, используемый для создания кода. Необходимо задать либо имя языка, зарегистрированное в файле Machine.config, либо полное имя класса, наследуемого от CodeDomProvider.

Значения: c#, cs, csharp, vb, vbs, visualbasic, vbscript, javascript, c++, mc, cpp

По умолчанию: csharp

Краткая форма: /l

Дополнительные сведения см. в разделе CodeDomProvider — класс.

Выбор пространства имен для клиента

Параметр Описание

/namespace:<string,string>

Задает сопоставление между элементом targetNamespace WSDL или схемы XML и пространством имен среды CLR. При использовании в качестве значения элемента targetNamespace подстановочного знака (*) все элементы targetNamespaces сопоставляются без явного сопоставления данному пространству имен среды CLR.

Чтобы гарантировать, что имя контракта сообщения не конфликтует с именем операции, либо дополните ссылку на тип двойными двоеточиями (::), либо убедитесь, что имена уникальны.

По умолчанию: для типов DataContracts выводится из целевого пространства имен документа схемы. Для всех остальных формируемых типов используется пространство имен по умолчанию.

Краткая форма: /n

Выбор привязки данных

Параметр Описание

/enableDataBinding

Реализует интерфейс INotifyPropertyChanged во всех типах DataContract для включения привязки данных.

Краткая форма: /edb

Формирование конфигурации

Параметр Описание

/config:<configFile>

Задает имя файла для формируемого файла конфигурации.

По умолчанию: output.config

/mergeConfig

Объединяет сформированную конфигурацию с существующим файлом (вместо перезаписи существующего файла).

/noConfig

Запрещает формировать файлы конфигурации.

См. также

Основные понятия

Использование метаданных
Общие сведения об архитектуре метаданных