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 2.1 SDK 或更高版本
- 你喜欢的代码编辑器
入门指南
以下示例将引导你完成向 .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 命令窗口中执行以下步骤:
为项目创建名为 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 工具还会将代理代码所需的相应 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
导航到 Web 浏览器中控制台中列出的 URL(例如
http://localhost:5000
)。
应会看到以下输出:“Hello dotnet-svcutil!”
有关 dotnet-svcutil
工具参数的详细说明,请调用传递帮助参数的工具,如下所示:
dotnet-svcutil --help
反馈和问题
如果有任何问题或反馈, 请在 GitHub 上提出问题。 还可以在 GitHub 上的 WCF 存储库中查看任何现有问题。
发行说明
- 有关更新的发行信息(包括已知问题),请参阅 发行说明 。