適用於 .NET Core 的 WCF dotnet-svcutil 工具
Windows Communication Foundation (WCF) dotnet-svcutil 工具是一種 .NET 工具,可從網路位置上的 Web 服務或從 WSDL 檔案擷取中繼資料,並產生包含可用來存取 Web 服務作業的用戶端 Proxy 方法的 WCF 類別。
類似適用於 .NET Framework 專案的 Service Model Metadata - svcutil 工具,dotnet-svcutil 是一種命令列工具,可用來產生與 .NET Core 和 .NET Standard 專案相容的 Web 服務參考。
dotnet-svcutil 工具是於 Visual Studio 2017 15.5 版首次推出之 WCF Web Service Reference Visual Studio 連線服務提供者的替代選項。 dotnet-svcutil 工具可當作 .NET 工具,在 Linux、macOS 和 Windows 上跨平台使用。
重要
您只應該參考來自信任來源的服務。 新增不信任來源的參考可能會危及安全性。
必要條件
- .NET Core 2.1 SDK 或更新版本
- 您慣用的程式碼編輯器
開始使用
下列範例會引導您完成將 Web 服務參考新增到 .NET Core Web 專案並叫用服務的必要步驟。 您建立名為 HelloSvcutil 的 .NET Core Web 應用程式,並對實作下列合約的 Web 服務新增參考:
[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
在您的網頁瀏覽器中,瀏覽到主控台列出的 URL (例如
http://localhost:5000
)。
您應該會看見下列輸出:"Hello dotnet-svcutil!"
如需 dotnet-svcutil
工具參數的詳細說明,請依下列所示叫用工具並傳遞 help 參數:
dotnet-svcutil --help
意見反應和問題
如果您有任何問題或意見反應,請在 GitHub 上開啟問題。 您也可以在 GitHub 的 WCF 存放庫檢閱任何現有問題或議題。
版本資訊
- 如需已更新的版本資訊,請參閱版本資訊 (包含已知問題)。
資訊
- dotnet-svcutil NuGet 套件 \(英文\)