0

我想使用基于通过添加服务引用生成的代码的 .NET 客户端连接到 SOAP Web 服务(HP Operations Manager 事件 Web 服务)。生成的代理会创建一个实现DuplexClientBase该类的客户端。该服务是使用自签名证书托管的 IIS,我需要使用基本身份验证登录。

我在尝试连接到此服务时遇到了两个问题:

  • 我还没有找到正确的绑定配置。绑定不支持具有基本身份验证的双工或 https 流量。
  • 添加 .NET 2.0 Web 服务引用时(不存在绑定问题),我能够连接到服务,但服务所需的“Action”标头元素<a:Action s:mustUnderstand="1"> http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action>不包含在标头中。当我创建 SoapExtensions 并在方法中检查对象Action属性的内容时,它包含正确的值,但该属性未在消息头中序列化。SoapMessageProcessMessage(SoapMessage message)

我想知道你们中的任何人是否可以建议做什么:

  • 继续使用 2.0 旧版引用,并找到一种在 SOAP 标头中添加 Action 元素的方法。(例如添加一个 SoapExtension)
  • 修复绑定一个找到连接到带有错误证书的 https 站点的方法(wsDualHttpBinding不支持 HTTPS,BasicHttpBinding不支持双工,PollingDuplexHttpBinding在控制台应用程序中似乎不起作用)
  • 尝试以不需要双工通信的方式生成代码。这可能吗?
4

1 回答 1

0

可以使 .NET 2.0 客户端支持 WS 寻址。您可以通过下载和安装 Webservice Enhancements 3.0 (WSE) 来完成此操作。http://www.microsoft.com/en-us/download/details.aspx?id=14089 添加对 Microsoft.Web.Services3 程序集的引用并更改通过添加 Web 服务引用生成的代码时。更改System.Web.Services.Protocols.SoapHttpClientProtocolMicrosoft.Web.Services3.WebServicesClientProtocol代码将支持 WS Adressing。action 元素现在将被添加到 SOAP 标头中。

尽管此解决方法可以完成工作,但我仍然更喜欢 WCF 服务引用连接。

于 2013-09-10T07:47:54.620 回答