WCF-Tool „dotnet-svcutil“ für .NET Core
Das dotnet-svcutil-Tool der Windows Communication Foundation (WCF) ist ein .NET-Tool, das Metadaten von einem Webdienst aus einem Netzwerkspeicherort oder einer WSDL-Datei abruft und eine WCF-Klasse mit Clientproxymethoden generiert, die auf Webdienstvorgänge zugreifen.
Ähnlich wie das Service Model Metadata - svcutil-Tool für .NET Framework-Projekte ist dotnet-svcutil ein Befehlszeilentool zum Generieren eines Webdienstverweises, der mit .NET Core- und .NET Standard-Projekten kompatibel ist.
Das Tool dotnet-svcutil ist eine alternative Option zum mit Visual Studio verbundenen Dienstanbieter WCF Web Service Reference, der zuerst in Visual Studio 2017 Version15.5 enthalten war. Das .NET-Tool dotnet-svcutil ist plattformübergreifend für Linux, macOS und Windows verfügbar.
Wichtig
Sie sollten nur auf Dienste aus einer vertrauenswürdigen Quelle verweisen. Wenn Sie Verweise aus nicht vertrauenswürdigen Quellen hinzufügen, hat das möglicherweise Auswirkungen auf die Sicherheit.
Voraussetzungen
- .NET Core 2.1 SDK oder höhere Versionen
- Ihr bevorzugter Code-Editor
Erste Schritte
Das folgende Beispiel führt Sie durch die erforderlichen Schritte zum Hinzufügen eines Webdienstverweises zu einem .NET Core- Webprojekt und Aufrufen des Diensts. Sie erstellen eine .NET Core-Webanwendung mit dem Namen HelloSvcutil und fügen einen Verweis auf einen Webdienst hinzu, der folgenden Vertrag implementiert:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
In diesem Beispiel wird angenommen, dass der Webdienst unter folgender Adresse gehostet wird: http://contoso.com/SayHello.svc
.
Führen Sie in einem Windows-, macOS- oder Linux-Befehlsfenster die folgenden Schritte aus:
Erstellen Sie ein Verzeichnis mit dem Namen HelloSvcutil für das Projekt, und machen Sie es zu Ihrem aktuellen Verzeichnis, wie im folgenden Beispiel:
mkdir HelloSvcutil cd HelloSvcutil
Erstellen Sie mithilfe des
dotnet new
-Befehls wie folgt ein neues C#-Webprojekt in diesem Verzeichnis:dotnet new web
Installieren Sie das
dotnet-svcutil
NuGet-Paket als CLI-Tool:dotnet tool install --global dotnet-svcutil
Führen Sie den Befehl dotnet-svcutil aus, um die Webdienstverweisdatei zu generieren:
dotnet-svcutil http://contoso.com/SayHello.svc
Die generierte Datei wird als HelloSvcutil/ServiceReference/Reference.cs gespeichert. Das dotnet-svcutil-Tool fügt dem Projekt auch die entsprechenden WCF-Pakete hinzu, die der Proxycode als Paketverweise benötigt.
Verwenden des Dienstverweisnamens
Stellen Sie wie folgt die WCF-Pakete mithilfe des
dotnet restore
-Befehls wieder her:dotnet restore
Suchen Sie den Namen der Clientklasse und den Vorgang, den Sie verwenden möchten.
Reference.cs
enthält eine Klasse, die vonSystem.ServiceModel.ClientBase
erbt, mit Methoden, die zum Aufrufen von Vorgängen für den Dienst verwendet werden können. In diesem Beispiel rufen Sie den Vorgang SayHello des Diensts Hello auf.ServiceReference.SayHelloClient
ist der Name der Clientklasse und hat eine MethodeHelloAsync
aufgerufen, die verwendet werden kann, um den Vorgang aufzurufen.Öffnen Sie die
Startup.cs
-Datei in einem Editor, und fügen Sie eineusing
-Anweisung für den Dienstverweisnamespace oben hinzu:using ServiceReference;
Bearbeiten Sie die
Configure
-Methode zum Aufrufen des Webdiensts. Hierzu erstellen Sie eine Instanz der Klasse, die vonClientBase
erbt, und rufen die Methode für das Clientobjekt auf: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); }); }
Führen Sie die Anwendung wie folgt mithilfe des
dotnet run
-Befehls aus:dotnet run
Navigieren Sie in Ihrem Webbrowser zu der URL, die in der Konsole aufgelistet ist, (z.B.
http://localhost:5000
).
Die folgende Ausgabe wird angezeigt: „Hello dotnet-svcutil!“
Um eine ausführliche Beschreibung der Parameter des dotnet-svcutil
-Tools zu erhalten, rufen Sie das Tool wie folgt mit Übergabe des Hilfeparameters auf:
dotnet-svcutil --help
Feedback und Fragen
Wenn Sie Fragen haben oder uns Feedback geben möchten, öffnen Sie ein Problem auf GitHub. Sie können außerdem bereits vorhandene Fragen oder Probleme im WCF-Repository auf GitHub überprüfen.
Anmerkungen zu diesem Release
- Aktualisierte Informationen zu den einzelnen Versionen, einschließlich bekannter Probleme, finden Sie in den Anmerkungen zu den jeweiligen Versionen.