适用于 .NET Core 的 WCF dotnet-svcutil 工具

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

与 .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 Web 项目添加 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 工具还会将代理代码所需的相应 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 存储库中查看任何现有问题。

发行说明

  • 有关更新的发行信息(包括已知问题),请参阅 发行说明

信息