我们的第三方API提供两种不同的Web服务,但具有相同的方法和模型。然而,他们只在URI上有所不同(Web服务路径,行动路径[运营合同]。
所以我决定:
使用VS。
编辑命名空间以使用相同的“Common”而不使用服务引用,而不是使用Reference.cs编辑的代码。
创建一个新代理,处理要使用的服务的正确URI(将Reference.cs包装在其中)。
现在,我遇到了“Method1”的问题,因为它们有不同的动作名称。有一个例外:
“服务器无法识别其值 HTTP标头SOAPAction: http://www.api.com/service/Method1“
我只是注意到正确的操作名称是:http://www.api.com/service1/Method1
现在的问题是,是否有任何配置或行为可用于更正每项服务的每种方法的操作名称?
或者只要他们继续为API的每个实现添加合同,我还应该继续为每个实现添加合同,并且只为此使用ChannelFactory?
请帮助,谢谢。
答案 0 :(得分:1)
当遇到同样的问题时,我最终直接使用了ChannelFactory
在我的实现中,我有一个基本接口,它具有2个API的所有常用方法。然后我有两个单独的接口 - 每个第三方API版本一个 - 从基接口继承并添加两个实现之间不同的方法和[OperationContract]
属性。
当实例化ChannelFactory<>
时,我使用了其中一个子接口。帮助保持消费者代码的清洁和可维护性