Compartilhar via


Gerando um cliente do WCF de metadados de serviço

Este tópico descreve como usar as várias opções em Svcutil.exe para gerar clientes a partir de documentos de metadados.

Os documentos de metadados podem estar em um armazenamento durável ou serem recuperados online. A recuperação online segue o protocolo WS-MetadataExchange ou o protocolo Microsoft Discovery (DISCO). Svcutil.exe emite as seguintes solicitações de metadados simultaneamente para recuperar metadados:

  • Solicitação WS-MetadataExchange (MEX) para o endereço fornecido.

  • Solicitação MEX para o endereço fornecido com /mex anexado.

  • Solicitação DISCO (usando o DiscoveryClientProtocol dos serviços da Web ASP.NET) para o endereço fornecido.

Svcutil.exe gera o cliente com base no Web Services Description Language (WSDL) ou arquivo de política recebido do serviço. O nome principal do usuário (UPN) é gerado concatenando o nome do usuário com "@" e, em seguida, adicionando um nome de domínio totalmente qualificado (FQDN). No entanto, para usuários registrados no Active Directory, esse formato não é válido e o UPN que a ferramenta gera causa uma falha na autenticação Kerberos com a seguinte mensagem de erro: Falha na tentativa de logon. Para resolver esse problema, corrija manualmente o arquivo do cliente gerado pela ferramenta.

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

Tipos de referência e compartilhamento

Opção Descrição
/reference:<file path> Os tipos de referência no assembly especificado. Ao gerar clientes, use esta opção para especificar os assemblies que podem conter tipos que representam os metadados que estão sendo importados.

Forma abreviada: /r
/excludeType:<type> Especifica um nome de tipo totalmente qualificado ou qualificado do assembly a ser excluído dos tipos de contrato referenciados.

Forma abreviada: /et

Escolhendo um serializador

Opção Descrição
/serializer:Auto Seleciona automaticamente o serializador. Isso usa o serializador DataContract. Se isso falhar, XmlSerializer será usado.

Forma abreviada: /ser:Auto
/serializer:DataContractSerializer Gera tipos de dados que usam o serializador DataContract para serialização e desserialização.

Forma abreviada: /ser:DataContractSerializer
/serializer:XmlSerializer Gera os tipos de dados que usam o XmlSerializer para serialização e desserialização.

Forma abreviada: /ser:XmlSerializer
/importXmlTypes Configura o serializador DataContract para importar tipos não DataContract como tipos IXmlSerializable.

Forma abreviada: /ixt
/dataContractOnly Gera código apenas para DataContract tipos. Tipos ServiceContract são gerados.

Você deve especificar apenas arquivos de metadados locais para esta opção.

Forma abreviada: /dconly

Escolhendo uma linguagem para o cliente

Opção Descrição
/language:<language> Especifica a linguagem de programação a ser usada para gerar o código. Forneça um nome de linguagem registrado no arquivo Machine.config ou o nome totalmente qualificado de uma classe que herda de CodeDomProvider.

Valores: c#, cs, csharp, vb, vbs, visualbasic, vbscript, javascript, c++, mc, cpp

Padrão: csharp

Forma abreviada: /l

Para obter mais informações, consulte a classe CodeDomProvider.

Escolhendo um namespace para o cliente

Opção Descrição
/namespace:<string,string> Especifica um mapeamento de um WSDL ou XML Schema targetNamespace para um namespace Common Language Runtime (CLR). Usar um curinga (*) para o targetNamespace mapeia todos os targetNamespaces sem um mapeamento explícito para esse namespace CLR.

Para garantir que o nome do contrato de mensagem não colida com o nome da operação, qualifique a referência de tipo com dois-pontos duplos (::) ou certifique-se de que os nomes sejam exclusivos.

Padrão: Derivado do namespace de destino do documento de esquema para DataContracts. O namespace padrão é usado para todos os outros tipos gerados.

Forma abreviada: /n

Escolhendo uma associação de dados

Opção Descrição
/enableDataBinding Implementa a interface INotifyPropertyChanged em todos os tipos DataContract para habilitar a vinculação de dados.

Forma abreviada: /edb

Gerando configuração

Opção Descrição
/config:<configFile> Especifica o nome do arquivo para o arquivo de configuração gerado.

Padrão: output.config
/mergeConfig Mescla a configuração gerada em um arquivo existente, em vez de substituir o arquivo existente.
/noConfig Não gera arquivos de configuração.

Confira também