Gerando um cliente do WCF de metadados de serviçoGenerating a WCF Client from Service Metadata

Este tópico descreve como usar os vários comutadores no Svcutil.exe para gerar clientes de documentos de metadados.This topic describes how to use the various switches in Svcutil.exe to generate clients from metadata documents.

Os documentos de metadados podem estar em um armazenamento durável ou ser recuperados online.Metadata documents can be on a durable storage or be retrieved online. A recuperação online segue o protocolo de WS-MetadataExchange ou o protocolo de descoberta da Microsoft (DISCO).Online retrieval follows either the WS-MetadataExchange protocol or the Microsoft Discovery (DISCO) protocol. Svcutil.exe emite simultaneamente as seguintes solicitações de metadados para recuperar metadados:Svcutil.exe issues the following metadata requests simultaneously to retrieve metadata:

  • WS-MetadataExchange (MEX) a solicitação para o endereço fornecido.WS-MetadataExchange (MEX) request to the supplied address.

  • Solicitação de MEX para o endereço fornecido com /mex acrescentado.MEX request to the supplied address with /mex appended.

  • Solicitação de DISCO (usando o DiscoveryClientProtocol from ASP.NET Web Services) para o endereço fornecido.DISCO request (using the DiscoveryClientProtocol from ASP.NET Web services) to the supplied address.

Svcutil.exe gera o cliente com base no WSDL (Web Services Description Language) ou no arquivo de política recebido do serviço.Svcutil.exe generates the client based on the Web Services Description Language (WSDL) or policy file received from the service. O UPN (nome principal do usuário) é gerado concatenando o nome de usuário com " @ " e, em seguida, adicionando um FQDN (nome de domínio totalmente qualificado).The user principal name (UPN) is generated by concatenating the user name with "@" and then adding a fully-qualified domain name (FQDN). No entanto, para usuários que se registraram em Active Directory, esse formato não é válido e o UPN gerado pela ferramenta causa uma falha na autenticação Kerberos com a seguinte mensagem de erro: falha na tentativa de logon.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. Para resolver esse problema, corrija manualmente o arquivo do cliente gerado pela ferramenta.To resolve this problem, manually fix the client file that the tool generated.

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

Referenciando e compartilhando tiposReferencing and Sharing Types

OpçãoOption DescriçãoDescription
/Reference<file path>/reference:<file path> Os tipos de referência no assembly especificado.References types in the specified assembly. Ao gerar clientes, use esta opção para especificar os assemblies que podem conter tipos que representam os metadados que estão sendo importados.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

Forma abreviada: /rShort form: /r
/excludeType:<type>/excludeType:<type> Especifica um nome de tipo totalmente qualificado ou qualificado do assembly a ser excluído dos tipos de contrato referenciados.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

Forma abreviada: /etShort form: /et

Escolhendo um serializadorChoosing a Serializer

OpçãoOption DescriçãoDescription
/serializer:Auto/serializer:Auto Seleciona automaticamente o serializador.Automatically selects the serializer. Isso usa o DataContract serializador.This uses the DataContract serializer. Se isso falhar, o XmlSerializer será usado.If this fails, the XmlSerializer is used.

Forma abreviada: /ser:AutoShort Form: /ser:Auto
/serializer:DataContractSerializer/serializer:DataContractSerializer Gera tipos de dados que usam o DataContract serializador para serialização e desserialização.Generates data types that use the DataContract serializer for serialization and deserialization.

Forma abreviada: /ser:DataContractSerializerShort form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Gera os tipos de dados que usam o XmlSerializer para serialização e desserialização.Generates data types that use the XmlSerializer for serialization and deserialization.

Forma abreviada: /ser:XmlSerializerShort form: /ser:XmlSerializer
/importXmlTypes/importXmlTypes Configura o DataContract serializador para importar não DataContract tipos como IXmlSerializable tipos.Configures the DataContract serializer to import non-DataContract types as IXmlSerializable types.

Forma abreviada: /ixtShort form: /ixt
/dataContractOnly/dataContractOnly Gera código DataContract somente para tipos.Generates code for DataContract types only. ServiceContract os tipos são gerados.ServiceContract types are generated.

Você deve especificar somente arquivos de metadados locais para essa opção.You should specify only local metadata files for this option.

Forma abreviada: /dconlyShort form: /dconly

Escolhendo um idioma para o clienteChoosing a Language for the Client

OpçãoOption DescriçãoDescription
idioma<language>/language:<language> Especifica a linguagem de programação a ser usada para gerar o código.Specifies the programming language to use for code generation. Forneça um nome de idioma registrado no arquivo de Machine.config ou o nome totalmente qualificado de uma classe herdada de CodeDomProvider .Provide either a language name registered in the Machine.config file or the fully-qualified name of a class that inherits from CodeDomProvider.

Valores: c#, cs, Csharp, VB, vbs, VisualBasic, VBScript, JavaScript, c++, MC, CPPValues: c#, cs, csharp, vb, vbs, visualbasic, vbscript, javascript, c++, mc, cpp

Padrão: csharpDefault: csharp

Forma abreviada: /lShort form: /l

Para obter mais informações, consulte a classe CodeDomProvider.For more information, see CodeDomProvider class.

Escolhendo um namespace para o clienteChoosing a Namespace for the Client

OpçãoOption DescriçãoDescription
/namespace<string,string>/namespace:<string,string> Especifica um mapeamento de um esquema WSDL ou XML targetNamespace para um namespace Common Language Runtime (CLR).Specifies a mapping from a WSDL or XML Schema targetNamespace to a common language runtime (CLR) namespace. Usar um curinga (*) para os targetNamespace mapas todos targetNamespaces sem um mapeamento explícito para esse namespace CLR.Using a wildcard (*) for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Para certificar-se de que o nome do contrato de mensagem não colide com o nome da operação, qualifique a referência de tipo com dois-pontos duplos ( :: ) ou verifique se os nomes são exclusivos.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.

Padrão: derivado do namespace de destino do documento de esquema para o DataContracts .Default: Derived from the target namespace of the schema document for DataContracts. O namespace padrão é usado para todos os outros tipos gerados.The default namespace is used for all other generated types.

Forma abreviada: /nShort form: /n

Escolhendo uma associação de dadosChoosing a Data Binding

OpçãoOption DescriçãoDescription
/enableDataBinding/enableDataBinding Implementa a INotifyPropertyChanged interface em todos os DataContract tipos para habilitar a vinculação de dados.Implements the INotifyPropertyChanged interface on all DataContract types to enable data binding.

Forma abreviada: /edbShort form: /edb

Gerando configuraçãoGenerating Configuration

OpçãoOption DescriçãoDescription
/config<configFile>/config:<configFile> Especifica o nome do arquivo de configuração gerado.Specifies the file name for the generated configuration file.

Padrão: output.configDefault: output.config
/mergeConfig/mergeConfig Mescla a configuração gerada em um arquivo existente, em vez de substituir o arquivo existente.Merges the generated configuration into an existing file, instead of overwriting the existing file.
/noConfig/noConfig Não gera arquivos de configuração.Do not generate configuration files.

Veja tambémSee also