Strumento WCF dotnet-svcutil per .NET Core
Lo strumento Windows Communication Foundation (WCF) dotnet-svcutil è uno strumento .NET che consente di recuperare metadati da un servizio Web, in un percorso di rete o da un file WSDL e di generare una classe WCF contenente metodi del proxy client che accedono alle operazioni del servizio Web.
Analogo allo strumento Service Model Metadata - svcutil per i progetti .NET Framework, dotnet-svcutil è uno strumento da riga di comando per la generazione di un riferimento al servizio Web compatibile con i progetti .NET Core e .NET Standard.
Lo strumento dotnet-svcutil rappresenta un'alternativa al provider di servizi connessi di Visuali Studio WCF Web Service Reference, disponibile per la prima volta con Visual Studio 2017 versione 15.5. dotnet-svcutil è disponibile come strumento .NET multipiattaforma in Linux, macOS e Windows.
Importante
Si consiglia di fare riferimento solo a servizi provenienti da un'origine attendibile. L'aggiunta di riferimenti da un'origine non attendibile può compromettere la sicurezza.
Prerequisiti
- .NET Core 2.1 SDK o versioni successive
- Editor di codice preferito
Introduzione
L'esempio seguente illustra la procedura necessaria per aggiungere un riferimento al servizio Web a un progetto Web .NET Core e richiamare il servizio. Si creerà un'applicazione Web .NET Core denominata HelloSvcutil e verrà aggiunto un riferimento a un servizio Web che implementa il contratto seguente:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
In questo esempio si presuppone che il servizio Web sia ospitato all'indirizzo seguente: http://contoso.com/SayHello.svc
Da una finestra di comando di Windows, macOS o Linux eseguire la procedura seguente:
Creare una directory denominata HelloSvcutil per il progetto e renderla la directory corrente, come nell'esempio seguente:
mkdir HelloSvcutil cd HelloSvcutil
Creare un nuovo progetto Web C# in tale directory usando il comando
dotnet new
come indicato di seguito:dotnet new web
Installare il pacchetto NuGet
dotnet-svcutil
come strumento della riga di comando:dotnet tool install --global dotnet-svcutil
Eseguire il comando dotnet-svcutil per generare il file di riferimento al servizio Web come indicato di seguito:
dotnet-svcutil http://contoso.com/SayHello.svc
Il file generato viene salvato come HelloSvcutil/ServiceReference/Reference.cs. Lo strumento dotnet-svcutil aggiunge inoltre al progetto i pacchetti WCF appropriati richiesti dal codice del proxy come riferimenti ai pacchetti.
Uso del riferimento al servizio
Ripristinare i pacchetti WCF usando il comando
dotnet restore
come indicato di seguito:dotnet restore
Trovare il nome della classe client e dell'operazione da usare.
Reference.cs
conterrà una classe che eredita daSystem.ServiceModel.ClientBase
, con i metodi che possono essere usati per chiamare operazioni sul servizio. In questo esempio si vuole chiamare l'operazione Hello del servizio SayHello.ServiceReference.SayHelloClient
è il nome della classe client e ha un metodo chiamatoHelloAsync
che può essere usato per chiamare l'operazione.Aprire il file
Startup.cs
nell'editor e quindi aggiungere una direttivausing
per lo spazio dei nomi di riferimento al servizio nella parte superiore:using ServiceReference;
Modificare il metodo
Configure
per richiamare il servizio Web. Per eseguire questa operazione, creare un'istanza della classe che eredita daClientBase
e chiamare il metodo sull'oggetto client: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); }); }
Eseguire l'applicazione usando il comando
dotnet run
come indicato di seguito:dotnet run
Passare all'URL elencato nella console di (ad esempio,
http://localhost:5000
) nel Web browser.
Si dovrebbe vedere l'output seguente: "Hello dotnet-svcutil!"
Per una descrizione dettagliata dei parametri dello strumento dotnet-svcutil
, richiamare lo strumento passando il parametro help come indicato di seguito:
dotnet-svcutil --help
Commenti, suggerimenti e domande
In caso di domande o commenti e suggerimenti, segnalare un problema in GitHub. È anche possibile rivedere domande o problemi esistenti nel repository WCF in GitHub.
Note sulla versione
- Fare riferimento alle note sulla versione per informazioni aggiornate sulle versioni, compresi i problemi noti.