共用方式為


適用於 .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 上跨平台使用。

重要

您只應該參考來自信任來源的服務。 新增不信任來源的參考可能會危及安全性。

必要條件

開始使用

下列範例會引導您完成將 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 命令視窗執行下列步驟:

  1. 為您的專案建立一個名為 HelloSvcutil 的目錄,然後讓它成為您目前所在的目錄,如下列範例中所示:

    mkdir HelloSvcutil
    cd HelloSvcutil
    
  2. 使用 dotnet new 命令在該目錄中建立新的 C# Web 專案,如下所示:

    dotnet new web
    
  3. dotnet-svcutil NuGet 套件安裝為 CLI 工具:

    dotnet tool install --global dotnet-svcutil
    
  4. 執行 dotnet-svcutil 命令以產生 Web 服務參考檔案,如下所示:

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

產生的檔案會儲存為 HelloSvcutil/ServiceReference/Reference.csdotnet-svcutil 工具也會將 Proxy 程式碼所需的適當 WCF 套件,以套件參考的形式新增到專案。

使用服務參考

  1. 使用 dotnet restore 命令還原 WCF 套件,如下所示:

    dotnet restore
    
  2. 尋找您要使用的用戶端類別與作業名稱。 Reference.cs 會包含繼承自 System.ServiceModel.ClientBase的類別,並有可用來在服務上呼叫作業的方法。 在此例中,您想要呼叫 SayHello 服務的 Hello 作業。 ServiceReference.SayHelloClient 是用戶端類別的名稱,並有稱為 HelloAsync 的方法,可用來呼叫作業。

  3. 在編輯器中開啟 Startup.cs 檔案,在頂端為服務參考命名空間新增 using 指示詞:

    using ServiceReference;
    
  4. 編輯 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);
        });
    }
    
    
  5. 使用 dotnet run 命令執行應用程式,如下所示:

    dotnet run
    
  6. 在您的網頁瀏覽器中,瀏覽到主控台列出的 URL (例如 http://localhost:5000)。

您應該會看見下列輸出:"Hello dotnet-svcutil!"

如需 dotnet-svcutil 工具參數的詳細說明,請依下列所示叫用工具並傳遞 help 參數:

dotnet-svcutil --help

意見反應和問題

如果您有任何問題或意見反應,請在 GitHub 上開啟問題。 您也可以在 GitHub 的 WCF 存放庫檢閱任何現有問題或議題。

版本資訊

  • 如需已更新的版本資訊,請參閱版本資訊 (包含已知問題)。

資訊