动态修改wcf(或webservice)服务地址

当我们通过静态引用的方式进行添加服务引用时,如果我们没有经过特殊的处理,服务引用的地址就会和代码直接绑定在一起了,这样就会有这样的问题,当开发时添加测试环境的服务引用,但到了真实环境了,就得重新添加真实环境的服务引用,这样完全不符合要求的。

 

 

 

方式一:根据静态引用自动生成的配置文件的name属性,通过代码的方式重新指定服务地址(适合wcf和webservice)

方式二:根据静态引用获取代码,然后把代码做相应修改,实现无配置文件(适合wcf)

方式三:通过vistual studio自动的工具实现wsdl生成服务类(适合wcf和webservice)

 

 

方式一

1  根据静态引用后,我们可以看到配置文件app.config(或者web.config)自动生成了服务地址和服务绑定等信息,如下图:

 

从上图中,我们可以看到我们的服务地址是:http://localhost/ExternallyWebService/HISWebService.asmx,对应的服务地址的name =HISWebServiceSoap,我们可以根据name属性重新在代码中指定服务地址,代码如下:

 ServiceReference1.HISWebServiceSoapClient client = new ServiceReference1.HISWebServiceSoapClient("HISWebServiceSoap", "http://重新指定的地址/ExternallyWebService/HISWebService.asmx");

然后根据client对象就可以调用我们的服务方法了

 

 

方式二:

1  添加静态引用后,我们可以找到当前项目下的bin目录旁边有一个名为Connected  Services文件夹,如下图:

 

然后打开该文件夹中的文件夹ServiceReference1,找到Reference.cs,重新命名为HISWebServiceSoapClient(注意:里面还有添加静态引用时指定的命名空间,可以根据需要,修改该命名空间(可以通过记事本替换的方式进行)),并把它拷贝到新的项目下,并重新指定服务地址和绑定,调用如下(当然咯,引用System.ServiceModel.dll要添加一下):

            //根据实际情况指定绑定,如WSHttpBinding绑定等
            System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding();
            //指定地址
            System.ServiceModel.EndpointAddress address = new System.ServiceModel.EndpointAddress("http://服务地址/ExternallyWebService/HISWebService.asmx");
            ServiceReference2.HISWebServiceSoapClient client = new ServiceReference2.HISWebServiceSoapClient(binding, address);

获取到client对象就可以调用我们的服务方法了

 

 

 

方式三:

1  利用vistual studio生成服务类,参考:https://blog.csdn.net/zxy13826134783/article/details/111405798

这里我们生成的服务类名称为HISWebService,命名空间为:Demo

 

2  调用如下:

            Demo.HISWebService service = new Demo.HISWebService();
            service.Url = "http://服务地址/ExternallyWebService/HISWebService.asmx";
            //根据service调用服务方法getInPatientOutDaInfo
            Demo.resResponse response=service.getInPatientOutDaInfo(432261);

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值