Compartir a través de


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

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:

  1. Cree un directorio denominado HelloSvcutil para el proyecto y hágalo su directorio actual, como en el ejemplo siguiente:

    mkdir HelloSvcutil
    cd HelloSvcutil
    
  2. Cree un nuevo proyecto web de C# en ese directorio mediante el comando dotnet new del modo siguiente:

    dotnet new web
    
  3. Instale el paquete NuGet dotnet-svcutil como herramienta CLI:

    dotnet tool install --global dotnet-svcutil
    
  4. 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

  1. Restaure los paquetes de WCF mediante el comando dotnet restore como sigue:

    dotnet restore
    
  2. Busque el nombre de la clase de cliente y la operación que quiera usar. Reference.cs contendrá una clase que se hereda de System.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 llamado HelloAsync que se puede usar para llamar a la operación.

  3. Abra el archivo Startup.cs en el editor y agregue una directiva using al espacio de nombres de la referencia de servicio en la parte superior:

    using ServiceReference;
    
  4. Edite el método Configure para invocar el servicio web. Para ello, cree una instancia de la clase que se hereda de ClientBase 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);
        });
    }
    
    
  5. Ejecute la aplicación con el comando dotnet run como sigue:

    dotnet run
    
  6. 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.

Información