.NET Core 的 WCF dotnet-svcutil 工具

Windows Communication Foundation (WCF) dotnet-svcutil 工具是一种 .NET 工具,此工具从网络位置上的 Web 服务中或从 WSDL 文件中检索元数据,并生成包含访问 Web 服务操作的客户端代理方法的 WCF 类。

类似于 .NET Framework 项目的服务模型元数据 - svcutil 工具,dotnet svcutil 是用于生成 Web 服务引用的命令行工具,与 .NET Core 和 .NET Standard 项目兼容。

dotnet-svcutil 工具是 WCF Web 服务引用 Visual Studio 连接服务提供程序(随 Visual Studio 2017 版本 15.5 首次推出)的替代选项 。 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.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. 编辑 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. 导航到在 Web 浏览器的控制台中列出的 URL(例如,http://localhost:5000)。

您应看到以下输出:“Hello dotnet-svcutil!”

有关 dotnet-svcutil 工具参数的详细说明,请调用传递帮助参数的工具,如下所示:

dotnet-svcutil --help

反馈和问题

如果有任何问题或反馈,请在 GitHub 上提问。 也可以在 GitHub 上的 WCF 存储库中查看任何现有问题。

发行说明

  • 请参阅发行说明,了解更新的版本信息(包括已知问题)。

信息