Herramienta dotnet-svcutil de WCF para .NET Core
La herramienta dotnet-svcutil de Windows Communication Foundation (WCF) es una herramienta de .NET que recupera metadatos de un servicio web en una ubicación de red o de un archivo WSDL, y genera una clase de WCF que contiene métodos de proxy de cliente que acceden a las operaciones del servicio web.
Similar a la herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe) para proyectos de .NET Framework, dotnet-svcutil es una herramienta de línea de comandos para generar una referencia de servicio web compatible con proyectos de .NET Core y .NET Standard.
La herramienta dotnet-svcutil es una alternativa al proveedor de servicios conectados de Visual Studio WCF Web Service Reference que se distribuyó por primera vez en la versión 15.5 de Visual Studio 2017. La herramienta multiplataforma dotnet-svcutil, como herramienta de .NET, está disponible en Linux, macOS y Windows.
Importante
Solo debe hacer referencia a servicios desde un origen de confianza. Si agrega referencias desde un origen que no es de confianza podría poner en peligro la seguridad.
Requisitos previos
- SDK de .NET Core 2.1 o versiones posteriores
- Su editor de código favorito
Introducción
En el ejemplo siguiente se le guía por los pasos necesarios para agregar una referencia de servicio web a un proyecto web de .NET Core e invocar el servicio. Creará una aplicación web de .NET Core denominada HelloSvcutil y agregará una referencia a un servicio web que implementa el siguiente contrato:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
En este ejemplo, se da por hecho que el servicio web se hospedará en la siguiente dirección: http://contoso.com/SayHello.svc
Desde una ventana de comandos de Windows, Mac OS o Linux, siga estos pasos:
Cree un directorio denominado HelloSvcutil para el proyecto y hágalo su directorio actual, como en el ejemplo siguiente:
mkdir HelloSvcutil cd HelloSvcutil
Cree un nuevo proyecto web de C# en ese directorio mediante el comando
dotnet new
del modo siguiente:dotnet new web
Instale el paquete NuGet
dotnet-svcutil
como herramienta CLI:dotnet tool install --global dotnet-svcutil
Ejecute el comando dotnet-svcutil para generar el archivo de referencia del servicio web de la siguiente manera:
dotnet-svcutil http://contoso.com/SayHello.svc
El archivo generado se guarda como HelloSvcutil/ServiceReference1/Reference.cs. La herramienta dotnet_svcutil también agrega al proyecto los paquetes de WCF adecuados que necesita el código de proxy como referencias del paquete.
Uso de la referencia de servicio
Restaure los paquetes de WCF mediante el comando
dotnet restore
como sigue:dotnet restore
Busque el nombre de la clase de cliente y la operación que quiera usar.
Reference.cs
contendrá una clase que se hereda deSystem.ServiceModel.ClientBase
, con métodos que pueden usarse para llamar a las operaciones del servicio. En este ejemplo, quiere llamar a la operación Hello del servicio SayHello.ServiceReference.SayHelloClient
es el nombre de la clase de cliente, y tiene un método llamadoHelloAsync
que se puede usar para llamar a la operación.Abra el archivo
Startup.cs
en el editor y agregue una directivausing
al espacio de nombres de la referencia de servicio en la parte superior:using ServiceReference;
Edite el método
Configure
para invocar el servicio web. Para ello, cree una instancia de la clase que se hereda deClientBase
y llame al método en el objeto de cliente:public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { var client = new SayHelloClient(); var response = await client.HelloAsync(); await context.Response.WriteAsync(response); }); }
Ejecute la aplicación con el comando
dotnet run
como sigue:dotnet run
Vaya a la dirección URL indicada en la consola (por ejemplo,
http://localhost:5000
) en el explorador web.
Debería ver los siguientes resultados: "Hello dotnet-svcutil!"
Para obtener una descripción detallada de los parámetros de la herramienta dotnet-svcutil
, invoque la herramienta pasando el parámetro de ayuda del siguiente modo:
dotnet-svcutil --help
Preguntas y comentarios
Si tiene preguntas o comentarios, abra un problema en GitHub. También puede revisar las preguntas o problemas que ya se han planteado en el repositorio de WCF en GitHub.
Notas de la versión
- Eche un vistazo a las notas de la versión para obtener información actualizada sobre la versión, incluidos los problemas conocidos.