Gerando um cliente WCF a partir de metadados de serviço

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

Os documentos de metadados podem estar em um armazenamento durável ou ser recuperados on-line. 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.

  • Pedido MEX para o endereço fornecido com /mex anexo.

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

Svcutil.exe gera o cliente com base no WSDL (Web Services Description Language) ou no arquivo de política recebido do serviço. O nome principal do usuário (UPN) é gerado concatenando o nome de usuário com "@" e, em seguida, adicionando um nome de domínio totalmente qualificado (FQDN). No entanto, para usuários que se registraram no Ative 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: A tentativa de logon falhou. Para resolver esse problema, corrija manualmente o arquivo de cliente que a ferramenta gerou.

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

Tipos de referência e compartilhamento

Opção Description
/reference:<caminho do arquivo> Tipos de referência no assembly especificado. Ao gerar clientes, use essa opção para especificar assemblies que podem conter tipos que representam os metadados que estão sendo importados.

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

Forma abreviada: /et

Escolhendo um serializador

Opção Description
/serializer:Automático Seleciona automaticamente o serializador. Isso usa o DataContract serializador. Se isso falhar, o XmlSerializer é usado.

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

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

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

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

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

Forma abreviada: /dconly

Escolher um idioma para o cliente

Opção Description
/language:<idioma> Especifica a linguagem de programação a ser usada para a geração de código. Forneça um nome de idioma registrado no arquivo Machine.config ou o nome totalmente qualificado de uma classe que herda do 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 CodeDomProvider classe.

Escolhendo um namespace para o cliente

Opção Description
/namespace:<string,string> Especifica um mapeamento de um WSDL ou esquema XML para um namespace CLR (Common Language Runtime targetNamespace ). Usando um curinga (*) para os mapas, targetNamespace tudo targetNamespaces sem um mapeamento explícito para esse namespace CLR.

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 certifique-se de que os nomes são 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 vinculação de dados

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

Forma abreviada: /edb

Gerando configuração

Opção Description
/config:<configFile> Especifica o nome do 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.
/noConfiguração Não gere arquivos de configuração.

Consulte também