Создание клиента 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, этот формат недопустим, и универсальное имя пользователя (UPN), которое создает средство, приводит к сбою проверки подлинности Kerberos со следующим сообщением об ошибке: попытка входа не удалась. Чтобы устранить эту проблему, вручную исправьте файл клиента, который созданный средством.

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

Ссылки и типы общего доступа

Вариант Описание
/reference:<путь к файлу> Ссылается на типы в указанной сборке. При создании клиентов используйте этот параметр для указания сборок, которые могут содержать типы, представляющие импортируемые метаданные.

Короткая форма: /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:<язык> Указывает язык программирования, используемый для создания кода. Укажите имя языка, зарегистрированное в файле Machine.config, или полное имя класса, наследуемого от CodeDomProvider.

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

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

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

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

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

Вариант Описание
/namespace:<string,string> Указывает сопоставление из WSDL или XML-схемы targetNamespace с пространством имен среды CLR. Использование подстановочного знака (*) для targetNamespace картирует все targetNamespaces, не имеющие явного сопоставления с данным пространством имен CLR.

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

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

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

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

Вариант Описание
/enableDataBinding Интерфейс INotifyPropertyChanged реализует для всех типов DataContract с целью включения привязки данных.

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

Создание конфигурации

Вариант Описание
/config:<configFile> Указывает имя файла созданной конфигурации.

По умолчанию: output.config
/mergeConfig Объединяет созданную конфигурацию в существующий файл вместо перезаписи существующего файла.
/noConfig Не создавайте файлы конфигурации.

См. также