.NET Core 用 WCF dotnet-svcutil ツール

Windows Communication Foundation (WCF) dotnet-svcutil ツールは、ネットワークの場所にある Web サービスから、あるいは WSDL ファイルからメタデータを取得し、Web サービス操作にアクセスするクライアント プロキシ メソッドを含んだ WCF クラスを生成する .NET ツールです。

.NET Framework プロジェクトの ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) と同様に、dotnet-svcutil は、.NET Core プロジェクトおよび .NET Standard プロジェクトと互換性のある Web サービス参照を生成するためのコマンドライン ツールです。

dotnet-svcutil ツールは、Visual Studio 2017 バージョン 15.5 で最初に用意された Visual Studio 接続済みサービス プロバイダーである、WCF Web Service Reference に対する代わりのオプションです。 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. CLI ツールとして dotnet-svcutilNuGet パッケージをインストールします。

    dotnet tool install --global dotnet-svcutil
    
  4. 次に示すように、dotnet-svcutil コマンドを実行して、Web サービス参照ファイルを生成します。

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

生成されたファイルは、HelloSvcutil/ServiceReference/Reference.cs として保存されます。 また、dotnet-svcutil ツールでは、プロキシ コードで必要な適切な 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. Web サービスを呼び出すように、Configure メソッドを編集します。 これを行うには、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. Web ブラウザーでコンソールに表示されている URL に移動します (たとえば、http://localhost:5000)。

次の出力が表示されます。"Hello dotnet-svcutil!"

dotnet-svcutil ツールのパラメーターの詳細な説明については、次に示すように、help パラメーターを渡してツールを呼び出してください。

dotnet-svcutil --help

フィードバックと質問

質問やフィードバックがありましたら、GitHub で問題を提起してくださいGitHub の WCF リポジトリで既存の質問や問題を確認することもできます。

リリース ノート

  • 既知の問題を含む最新のリリース情報については、リリース ノートのページを参照してください。

情報