Создание клиента WCF из метаданных службы
В этом разделе рассматривается использование различных ключей в Svcutil.exe для формирования клиентов из документов метаданных.
Документы метаданных могут находиться в устойчивом хранилище или извлекаться в оперативном режиме. Извлечение в оперативном режиме происходит либо по протоколу WS-MetadataExchange, либо по протоколу Microsoft Discovery (DISCO). Svcutil.exe одновременно отправляет следующие запросы метаданных для извлечения метаданных:
запрос WS-MetadataExchange (MEX) по указанному адресу;
запрос MEX с присоединенным ключом
/mex
по указанному адресу;Запрос DISCO (с помощью DiscoveryClientProtocol веб-служб ASP.NET) к указанному адресу.
Программа Svcutil.exe формирует клиент на основании файла WSDL или файла политики, полученного от службы. Имя субъекта-пользователя (UPN) создается путем объединения имени пользователя с именем @, а затем добавлением полного доменного имени (FQDN). Однако для пользователей, зарегистрированных в Active Directory, этот формат недопустим и имя участника-пользователя, которое создает средство, приводит к сбою проверки подлинности Kerberos со следующим сообщением об ошибке: попытка входа завершилась ошибкой. Чтобы устранить эту проблему, вручную исправьте файл клиента, созданный средством.
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 | Запрещает создавать файлы конфигурации. |