Compartir a través de


Generación de un cliente WCF a partir de los metadatos de servicio

En este tema se describe cómo utilizar los diversos modificadores de Svcutil.exe para generar los clientes a partir de documentos de metadatos.

Los documentos de metadatos pueden estar en un almacenamiento duradero o recuperarse en línea. La recuperación en línea sigue el protocolo WS-MetadataExchange o el protocolo Microsoft Discovery (DISCO). Svcutil.exe emite simultáneamente las siguientes solicitudes de metadatos para recuperar los metadatos:

  • Solicitud WS-MetadataExchange (MEX) a la dirección proporcionada.

  • Solicitud MEX a la dirección proporcionada con /mex anexado.

  • Solicitud DISCO (con el uso de DiscoveryClientProtocol de los servicios web de ASP.NET) a la dirección proporcionada.

Svcutil.exe genera el cliente basado en el lenguaje de descripción de servicios Web (WSDL) o en el archivo de directivas recibido desde el servicio. El nombre principal del usuario (UPN) se genera concatenando el nombre de usuario con "@" y, a continuación, agregando un nombre de dominio completo (FQDN). Sin embargo, para los usuarios que se registraron en Active Directory, este formato no es válido y el UPN generado por la herramienta produce un error en la autenticación Kerberos, con el mensaje No se puede iniciar sesión. Para resolver este problema, corrija de forma manual el archivo de cliente que ha generado la herramienta.

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

Hacer referencia a tipos y compartirlos

Opción Descripción
/reference:<ruta de archivo> Tipos de referencia en el ensamblado especificado. Al generar clientes, utilice esta opción para especificar ensamblados que podrían contener tipos que representan los metadatos que se están importando.

Forma abreviada: /r
/excludeType:<type> Especifica un nombre de tipo completo o calificado con el nombre de ensamblado que se va a excluir de los tipos de contrato a los que se hace referencia.

Forma abreviada: /et

Elección de un serializador

Opción Descripción
/serializer:Auto Selecciona el serializador de forma automática. Esto utiliza el serializador DataContract. Si esto falla, se utiliza XmlSerializer.

Forma abreviada: /ser:Auto
/serializer:DataContractSerializer Genera tipos de datos que utilizan el serializador DataContract para la serialización y deserialización.

Forma abreviada: /ser:DataContractSerializer
/serializer:XmlSerializer Genera tipos de datos que usan el XmlSerializer para la serialización y deserialización.

Forma abreviada: /ser:XmlSerializer
/importXmlTypes Configura el serializador DataContract para que importe tipos que no sean de DataContract como tipos IXmlSerializable.

Forma abreviada: /ixt
/dataContractOnly Genera código para los tipos de DataContract únicamente. Se generan los tipos de ServiceContract.

Solo debería especificar archivos de metadatos locales para esta opción.

Forma abreviada: /dconly

Elección de un lenguaje para el cliente

Opción Descripción
/language:<lenguaje> Especifica el lenguaje de programación a utilizar para la generación de código. Proporcione un nombre de lenguaje registrado en el archivo Machine.config o el nombre completo de una clase que hereda de CodeDomProvider.

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

Valor predeterminado: csharp

Forma abreviada: /l

Para obtener más información, vea la clase CodeDomProvider.

Elección de un espacio de nombres para el cliente

Opción Descripción
/namespace:<string,string> Especifica una asignación desde un esquema WSDL o XML targetNamespace a un espacio de nombres de Common Language Runtime (CLR). El uso de un asterisco (*) para el targetNamespace asigna todos los targetNamespaces sin una asignación explícita a ese espacio de nombres de CLR.

Para asegurarse de que el nombre de contrato de mensaje no produce una colisión con el nombre de la operación, debería certificar o la referencia de tipo con dos puntos dobles (::) o asegurarse de que los nombres son únicos.

Valor predeterminado: Se deriva del espacio de nombres de destino del documento de esquema para DataContracts. El espacio de nombres predeterminado se utiliza para todos los otros tipos generados.

Forma abreviada: /n

Elección de un enlace de datos

Opción Descripción
/enableDataBinding Implementa la interfaz INotifyPropertyChanged en todos los tipos de DataContract para habilitar el enlace de datos.

Forma abreviada: /edb

Generación de la configuración

Opción Descripción
/config:<configFile> Especifica el nombre de archivo para el archivo de configuración generado.

Valor predeterminado: output.config
/mergeConfig Combina la configuración generada en un archivo existente en lugar de sobrescribir el archivo existente.
/noConfig No generar archivos de configuración.

Consulte también