Windows Communication Foundation (WCF) dotnet-svcutil 工具是 .NET 工具,可從網路位置上的 Web 服務或 WSDL 檔案擷取元數據,併產生包含存取 Web 服務作業之用戶端 Proxy 方法的 WCF 類別。
類似於 .NET Framework 專案的 服務模型元數據 - svcutil 工具, dotnet-svcutil 是用來產生與 .NET Core 和 .NET Standard 專案相容的 Web 服務參考的命令行工具。
dotnet-svcutil 工具是 WCF Web 服務參考 Visual Studio 連線服務提供者的替代選項,其第一個隨附於 Visual Studio 2017 15.5 版。 dotnet-svcutil 工具作為 .NET 工具,可在 Linux、macOS 和 Windows 上使用跨平臺。
這很重要
您應該只參考來自受信任來源的服務。 從不受信任的來源新增參考可能會危害安全性。
先決條件
- .NET Core 2.1 SDK 或更新版本
- 您慣用的程式代碼編輯器
入門指南
下列範例會逐步引導您完成將 Web 服務參考新增至 .NET Core Web 專案並叫用服務所需的步驟。 您將建立名為 HelloSvcutil 的 .NET Core 網頁應用程式,並新增一個參考至實作下列合約的網路服務:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
在此範例中,假設 Web 服務會裝載於下列位址: http://contoso.com/SayHello.svc
從 Windows、macOS 或 Linux 命令視窗執行下列步驟:
為您的專案建立名為 HelloSvcutil 的目錄,並將其設為您目前的目錄,如下列範例所示:
mkdir HelloSvcutil cd HelloSvcutil
使用
dotnet new
命令在該目錄中建立新的 C# Web 專案,如下所示:dotnet new web
將
dotnet-svcutil
NuGet 套件 安裝為 CLI 工具:dotnet tool install --global dotnet-svcutil
執行 dotnet-svcutil 命令以產生 Web 服務參考檔案,如下所示:
dotnet-svcutil http://contoso.com/SayHello.svc
產生的檔案會儲存為 HelloSvcutil/ServiceReference/Reference.cs。 dotnet-svcutil 工具也會將 Proxy 程式代碼所需的適當 WCF 套件新增至專案作為套件參考。
使用服務參考
使用
dotnet restore
命令還原 WCF 套件,如下所示:dotnet restore
尋找您想要使用的用戶端類別和作業名稱。
Reference.cs
會包含繼承自System.ServiceModel.ClientBase
的類別,以及可用來呼叫服務作業的方法。 在此範例中,您想要呼叫 SayHello 服務的 Hello 作業。ServiceReference.SayHelloClient
是客戶端類別的名稱,而且有稱為 的方法HelloAsync
,可用來呼叫作業。在編輯器中開啟
Startup.cs
檔案,並在檔案開頭新增using
服務參考命名空間的指令:using ServiceReference;
編輯
Configure
方法以呼叫 Web 服務。 您可以建立繼承自ClientBase
的類別實例,並在客戶端物件上呼叫 方法來執行此動作: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); }); }
使用
dotnet run
命令執行應用程式,如下所示:dotnet run
在您的網頁瀏覽器中導航至控制台中所列的網址(例如,
http://localhost:5000
)。
您應該會看到下列輸出:「Hello dotnet-svcutil!
如需工具參數的詳細描述,請執行工具並傳遞說明參數,如下所示:dotnet-svcutil
dotnet-svcutil --help
意見反應和問題
如果您有任何問題或意見反應,請在 GitHub 上提出問題。 您也可以在 GitHub 上的 WCF 存放庫檢閱任何現有的問題。
發布說明
- 如需更新的版本資訊,請參閱 版本資訊 ,包括已知問題。