Создание клиента 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 |
Запрещает формировать файлы конфигурации. |
См. также
Основные понятия
Использование метаданных
Общие сведения об архитектуре метаданных