0

我们的第三方 API 提供两种不同的 Web 服务,但具有相同的方法、模型。然而,它们仅在 URI 上有所不同(Web 服务路径、操作路径 [操作合同]。

所以我决定:

  1. 使用 VS 从他们的 wsdl 生成代码。

  2. 编辑命名空间以使用相同的“通用”而不是使用服务引用,而是使用 Reference.cs 编辑的代码。

  3. 创建一个新代理来处理要使用的服务的正确 URI(将 Reference.cs 包装在其中)。

现在,我遇到了“Method1”的问题,因为它们有不同的操作名称。有以下例外:

“服务器无法识别 HTTP Header SOAPAction 的值:http: //www.api.com/service/Method1

我只是注意到它正确的操作名称是: http: //www.api.com/service1/Method1

现在的问题是,是否有任何配置或行为可用于更正每个服务的每个方法的操作名称?

或者只要他们继续为 API 的每个实现添加合约,我也应该继续为每个实现添加合约,并为此使用 ChannelFactory?

请帮忙,谢谢。

4

1 回答 1

1

ChannelFactory当遇到同样的问题时,我最终直接使用了

在我的实现中,我有一个基本接口,其中包含 2 个 API 的所有常用方法。然后我有 2 个单独的接口 - 每个第 3 方 API 版本一个 - 从基本接口继承并添加[OperationContract]在两个实现之间变化的方法和属性。

实例化时ChannelFactory<> ,我使用了其中一个子接口。有助于保持消费者代码的清洁和可维护性

于 2011-04-18T09:52:00.307 回答