Web Services 当地址频繁变化时,如何从WSDL生成Web服务客户端(像专业人员一样)?

ne5o7dgx  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(157)

我必须使用ESB上的一些服务,这些服务具有以下地址:
1.对于开发环境:http://esbdev.com:11111/ws/ir.channel.aaa.pub.ws:ConsumeMeV1
1.对于测试环境:https://esbtest.com:22222/ws/ir.channel.aaa.ws:DoAmazingCalc
功能相同。
我可以用C#从WSDL生成一个公共代码(来控制所有代码),并通过一些配置来操纵我连接到哪个环境吗?我可以在开发环境中的http和测试环境中的https之间自由切换吗?
现在我在dev上这样调用它:

using (ConsumeMeV1_PortTypeClient client = new ConsumeMeV1_PortTypeClient(this.EsbEndpointBinding, this.EsbEndpointAddress))

但是开发名称是硬编码的-我应该如何在测试中将ConsumeMeV 1Map到DoAmazingCalc
在测试中,我这样调用它:

using (DoAmazingCalc_PortTypeClient client = new DoAmazingCalc_PortTypeClient(this.EsbEndpointBinding, this.EsbEndpointAddress))

我可以生成如下常见类吗:

using (BestServiceNameClient client = new BestServiceNameClient(this.EsbEndpointBinding, this.EsbEndpointAddress))

对我来说,最好的选择是从数据库中获取端点/名称配置,并注入到客户端类中-但如何操作呢?

brgchamk

brgchamk1#

好吧,我知道负数从何而来。
地址的任何部分都不重要,只要它下面的功能没有改变。所以两个生成的类都允许你在每个给定的地址上使用它们。我注意到,这些显而易见的东西只有当你知道它的时候才是这样的,所以我很抱歉,甚至没有人写过一个字。
但是,当涉及到https时,它取决于BasicHttpBinding.Security.Mode设置。您可以为https设置Transport,为http设置TransportCredentialOnly。相应的值可以与用户和密码一起保存并从数据库或其他配置中检索。
我使用上面的设置:基本HttpBinding.安全性.传输.客户端凭证类型= HttpClientCredentialType.基本;

相关问题