NET Core 中调用已注册的服务或Web Service(特别是SOAP服务),通常涉及使用System.ServiceModel命名空间中的类。
但由于.NET Core早期版本并不直接支持WCF(Windows Communication Foundation)客户端,这一过程与在.NET Framework中有所不同。
不过,从.NET Core 3.0开始,通过引入Microsoft.WCF.WebServiceReference.Provider包,可以实现对某些WCF功能的支持,包括消费SOAP服务。
对于.NET 5及之后的.NET Core版本(现在统称为.NET),这一支持得到了进一步的增强。
以下是使用.NET Core
或.NET 5+
调用WebService的基本步骤:
1. 安装必要的包
如果你的应用是.NET Core 3.0
或更高版本,可以通过NuGet安装Microsoft.WCF.WebServiceReference.Provider
包来添加对WCF服务引用的支持。从.NET 5开始,这个功能被集成进了Microsoft.Wcf.WebServiceReference
包中,并且支持性与体验得到了进一步提升。
2. 添加服务引用
在Visual Studio中,你可以右键点击项目 -> "Add" -> "Connected Service",然后选择"WCF Web Service Reference"。在弹出的对话框中,输入WSDL(Web服务描述语言)的URL,Visual Studio会基于该WSDL生成代理类和服务配置。
如果是手动操作或者非Visual Studio环境,可以使用svcutil
工具生成代理类代码。例如:
svcutil.exe http://example.com/YourService.svc?wsdl
3. 调用服务
3.1拓展方法注册服务
using Microsoft.Extensions.DependencyInjection;
namespace Demo.WebService
{
/// <summary>
/// 单例注入webservice服务Soap
/// 在服务启动的时候注册
/// </summary>
public static class WebServiceCollectionExtensions
{
public static void ConfigureWebServices(this IServiceCollection services)
{
services.AddSingleton<ASoap>(new ASoapClient
(ASoapClient.EndpointConfiguration.ASoapSoap));
}
}
}
3.2 调用服务
namespace Demo.Services
{
/// <summary>
/// 调用webservice处理
/// </summary>
public class WebService
{
private ASoap _aSoap;
public WebService(ASoap aSoap)
{
_aSoap=aSoap;
}
/// <summary>
/// 调用
/// </summary>
public void UpdateAppointment()
{
//建设有一个为HelloWord的远程方法
_aSoap.HelloWord();
}
}
}
请注意,随着.NET 5及后续版本的发展,推荐使用
Microsoft.Wcf.WebServiceReference
包,因为它提供了更为简便和集成度更高的方式来添加和管理WCF服务引用,减少了手动配置的复杂度。如果你正在使用或计划升级到.NET 5及以上版本,应优先考虑这种方法。