Создание клиента WCF из метаданных службыGenerating a WCF Client from Service Metadata

В этом разделе рассматривается использование различных ключей в Svcutil.exe для формирования клиентов из документов метаданных.This topic describes how to use the various switches in Svcutil.exe to generate clients from metadata documents.

Документы метаданных могут находиться в устойчивом хранилище или извлекаться в оперативном режиме.Metadata documents can be on a durable storage or be retrieved online. Извлечение в оперативном режиме происходит либо по протоколу WS-MetadataExchange, либо по протоколу Microsoft Discovery (DISCO).Online retrieval follows either the WS-MetadataExchange protocol or the Microsoft Discovery (DISCO) protocol. Svcutil.exe одновременно отправляет следующие запросы метаданных для извлечения метаданных:Svcutil.exe issues the following metadata requests simultaneously to retrieve metadata:

  • запрос WS-MetadataExchange (MEX) по указанному адресу;WS-MetadataExchange (MEX) request to the supplied address.

  • запрос MEX с присоединенным ключом /mex по указанному адресу;MEX request to the supplied address with /mex appended.

  • Запрос DISCO (с использованием DiscoveryClientProtocol веб-служб из ASP.NET) к заданному адресу.DISCO request (using the DiscoveryClientProtocol from ASP.NET Web services) to the supplied address.

Программа Svcutil.exe формирует клиент на основании файла WSDL или файла политики, полученного от службы.Svcutil.exe generates the client based on the Web Services Description Language (WSDL) or policy file received from the service. Имя участника-пользователя (UPN) создается путем сцепления имени пользователя с " @ " и добавления полного доменного имени (FQDN).The user principal name (UPN) is generated by concatenating the user name with "@" and then adding a fully-qualified domain name (FQDN). Однако для пользователей, которые зарегистрировались в Active Directory, этот формат является недопустимым, и имя участника-пользователя, которое создает средство, вызывает сбой в проверке подлинности Kerberos со следующим сообщением об ошибке: попытка входа завершилась неудачей.However, for users who registered on Active Directory, this format is not valid and the UPN that the tool generates causes a failure in the Kerberos authentication with the following error message: The logon attempt failed. Чтобы устранить эту проблему, необходимо вручную откорректировать файл клиента, сформированный Svcutil.exe.To resolve this problem, manually fix the client file that the tool generated.

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

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

ПараметрOption ОписаниеDescription
/Reference<file path>/reference:<file path> Ссылается на типы в заданной сборке.References types in the specified assembly. При создании клиентов необходимо использовать этот параметр для задания сборок, которые могут содержать типы, представляющие импортируемые метаданные.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

Краткая форма: /rShort form: /r
/excludeType:<type>/excludeType:<type> Задает полное имя типа или имя типа с указанием на сборку, который необходимо исключить из ссылочных типов контракта.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

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

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

ПараметрOption ОписаниеDescription
/serializer:Auto/serializer:Auto Автоматически выбирает сериализатор.Automatically selects the serializer. Выбираемый сериализатор - DataContract.This uses the DataContract serializer. Если использовать этот сериализатор не удается, используется сериализатор XmlSerializer.If this fails, the XmlSerializer is used.

Сокращенная форма: /ser:AutoShort Form: /ser:Auto
/serializer:DataContractSerializer/serializer:DataContractSerializer Формирует типы данных, использующих для сериализации и десериализации сериализатор DataContract.Generates data types that use the DataContract serializer for serialization and deserialization.

Краткая форма: /ser:DataContractSerializerShort form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Формирует типы данных, использующих для сериализации и десериализации сериализатор XmlSerializer.Generates data types that use the XmlSerializer for serialization and deserialization.

Краткая форма: /ser:XmlSerializerShort form: /ser:XmlSerializer
/importXmlTypes/importXmlTypes Настраивает сериализатор DataContract на импорт типов, отличных от DataContract, в виде типов IXmlSerializable.Configures the DataContract serializer to import non-DataContract types as IXmlSerializable types.

Краткая форма: /ixtShort form: /ixt
/dataContractOnly/dataContractOnly Формирует код только для типов DataContract.Generates code for DataContract types only. Формируются типы ServiceContract.ServiceContract types are generated.

Для этого параметра следует задавать только локальные файлы метаданных.You should specify only local metadata files for this option.

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

Выбор языка для клиентаChoosing a Language for the Client

ПараметрOption ОписаниеDescription
/Language<language>/language:<language> Задает язык программирования, используемый для создания кода.Specifies the programming language to use for code generation. Необходимо задать либо имя языка, зарегистрированное в файле Machine.config, либо полное имя класса, наследуемого от CodeDomProvider.Provide either a language name registered in the Machine.config file or the fully-qualified name of a class that inherits from CodeDomProvider.

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

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

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

Дополнительные сведения см. в описании класса CodeDomProvider.For more information, see CodeDomProvider class.

Выбор пространства имен для клиентаChoosing a Namespace for the Client

ПараметрOption ОписаниеDescription
/Namespace<string,string>/namespace:<string,string> Задает сопоставление между элементом targetNamespace WSDL или схемы XML и пространством имен среды CLR.Specifies a mapping from a WSDL or XML Schema targetNamespace to a common language runtime (CLR) namespace. При использовании в качестве значения элемента targetNamespace подстановочного знака (*) все элементы targetNamespaces сопоставляются без явного сопоставления данному пространству имен среды CLR.Using a wildcard (*) for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Чтобы гарантировать, что имя контракта сообщения не конфликтует с именем операции, либо дополните ссылку на тип двойными двоеточиями (::), либо убедитесь, что имена уникальны.To make sure that the message contract name does not collide with the operation name, either qualify the type reference with double colons (::) or make sure the names are unique.

По умолчанию: для типов DataContracts выводится из целевого пространства имен документа схемы.Default: Derived from the target namespace of the schema document for DataContracts. Для всех остальных создаваемых типов используется пространство имен по умолчанию.The default namespace is used for all other generated types.

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

Выбор привязки данныхChoosing a Data Binding

ПараметрOption ОписаниеDescription
/enableDataBinding/enableDataBinding Реализует интерфейс INotifyPropertyChanged во всех типах DataContract для включения привязки данных.Implements the INotifyPropertyChanged interface on all DataContract types to enable data binding.

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

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

ПараметрOption ОписаниеDescription
/config<configFile>/config:<configFile> Задает имя файла для формируемого файла конфигурации.Specifies the file name for the generated configuration file.

По умолчанию: output.configDefault: output.config
/mergeConfig/mergeConfig Объединяет созданную конфигурацию с существующим файлом (вместо его перезаписи).Merges the generated configuration into an existing file, instead of overwriting the existing file.
/noConfig/noConfig Запрещает создавать файлы конфигурации.Do not generate configuration files.

См. такжеSee also