C# 调用WebService 笔记

发布时间 2024-01-10 12:10:22作者: LearnerPing

最近开发工作涉及到一些关于webService调用的问题,因为太久没有做过这部分,踩了一点坑,做个笔记记录一下,避免下次踩坑。

说明

C#调用webService基本有两种方法,一种是静态调用,也就是添加到服务引用,还有一种方式是动态引用,动态引用的主要思路是通过url将DLL下载到本地,然后进行调用,这里可以参考 https://www.cnblogs.com/dotnet261010/p/12461930.html
的文章,已经写的很清楚了。
工作中目前主要面临的情况是协同作业的时候,在本地调试别人的WebService然后切换到生产环境,使用动态调用相对麻烦一些,这里采用服务引用然后动态配置地址的方式实现

动态修改服务引用对象地址

首先添加服务引用

添加服务地址,点击转到可以下载服务,确定生成相关服务

引用完成后代码会生成新的ServiceReference1的命名空间,使用的时候创建对象就可以像调用本地方法一样调用webService的方法了

var service = new ServiceReference.Service1SoapClient()

可以看到当前方法的定义有如下5个:

其中endpointConfigurationName 指配置节点对象,remoteAddress配置节点地址
这里只需要使用第5个重构

var service = new ServiceReference1.Service1SoapClient("ServiceReferenceLive", "http://2.31.XX.XX:54986/Service1.asmx");

就可以将service地址指向实际环境配置的地址,配合配置文件就可以实现test 环境和 live 环境的快速切换了