Net Core 5 及以上通过服务引用的方式调用WebService

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及以上版本,应优先考虑这种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值