Dela via


WCF dotnet-svcutil-verktyg för .NET Core

Verktyget Windows Communication Foundation (WCF) dotnet-svcutil är ett .NET-verktyg som hämtar metadata från en webbtjänst på en nätverksplats eller från en WSDL-fil och genererar en WCF-klass som innehåller klientproxymetoder som har åtkomst till webbtjänståtgärderna.

Precis som servicemodellmetadata – svcutil-verktyget för .NET Framework-projekt är dotnet-svcutil ett kommandoradsverktyg för att generera en webbtjänstreferens som är kompatibel med .NET Core- och .NET Standard-projekt.

Verktyget dotnet-svcutil är ett alternativ till den anslutna tjänstleverantören WCF Web Service Reference Visual Studio som först levererades med Visual Studio 2017 version 15.5. Verktyget dotnet-svcutil som ett .NET-verktyg är tillgängligt plattformsoberoende i Linux, macOS och Windows.

Viktigt!

Du bör bara referera till tjänster från en betrodd källa. Att lägga till referenser från en ej betrodd källa kan äventyra säkerheten.

Förutsättningar

Komma igång

I följande exempel går vi igenom de steg som krävs för att lägga till en webbtjänstreferens till ett .NET Core-webbprojekt och anropa tjänsten. Du skapar ett .NET Core-webbprogram med namnet HelloSvcutil och lägger till en referens till en webbtjänst som implementerar följande kontrakt:

[ServiceContract]
public interface ISayHello
{
    [OperationContract]
    string Hello(string name);
}

I det här exemplet antar vi att webbtjänsten kommer att finnas på följande adress: http://contoso.com/SayHello.svc

Utför följande steg från ett Windows-, macOS- eller Linux-kommandofönster:

  1. Skapa en katalog med namnet HelloSvcutil för projektet och gör den till din aktuella katalog, som i följande exempel:

    mkdir HelloSvcutil
    cd HelloSvcutil
    
  2. Skapa ett nytt C#-webbprojekt i den katalogen med hjälp av kommandot enligt dotnet new följande:

    dotnet new web
    
  3. dotnet-svcutil Installera NuGet-paketet som ett CLI-verktyg:

    dotnet tool install --global dotnet-svcutil
    
  4. Kör kommandot dotnet-svcutil för att generera webbtjänstreferensfilen på följande sätt:

    dotnet-svcutil http://contoso.com/SayHello.svc
    

Den genererade filen sparas som HelloSvcutil/ServiceReference/Reference.cs. Verktyget dotnet-svcutil lägger också till lämpliga WCF-paket i projektet som krävs av proxykoden som paketreferenser.

Använda tjänstreferensen

  1. Återställ WCF-paketen med hjälp av kommandot på dotnet restore följande sätt:

    dotnet restore
    
  2. Leta reda på namnet på den klientklass och åtgärd som du vill använda. Reference.cs innehåller en klass som ärver från System.ServiceModel.ClientBase, med metoder som kan användas för att anropa åtgärder i tjänsten. I det här exemplet vill du anropa SayHello-tjänstensHello-åtgärd . ServiceReference.SayHelloClient är namnet på klientklassen och har en metod som heter HelloAsync som kan användas för att anropa åtgärden.

  3. Startup.cs Öppna filen i redigeringsprogrammet och lägg till ett using direktiv för tjänstreferensens namnområde högst upp:

    using ServiceReference;
    
  4. Configure Redigera metoden för att anropa webbtjänsten. Det gör du genom att skapa en instans av klassen som ärver från ClientBase och anropar metoden för klientobjektet:

    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. Kör programmet med hjälp av kommandot på dotnet run följande sätt:

    dotnet run
    
  6. Gå till url:en som visas i konsolen (till exempel http://localhost:5000) i webbläsaren.

Du bör se följande utdata: "Hello dotnet-svcutil!"

En detaljerad beskrivning av dotnet-svcutil verktygsparametrarna finns i verktyget som skickar hjälpparametern på följande sätt:

dotnet-svcutil --help

Feedback och frågor

Om du har frågor eller feedback öppnar du ett problem på GitHub. Du kan också granska eventuella befintliga frågor eller problem på WCF-lagringsplatsen på GitHub.

Viktig information

Information