绑定问题.NET客户端到HPOM Web服务

时间:2013-08-30 07:08:28

标签: c# .net web-services soap binding

我希望使用基于添加服务引用生成的代码的.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方法中SoapMessage对象的ProcessMessage(SoapMessage message)属性的内容时,它包含正确的值,但该属性未在消息头中序列化。 / LI>

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

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

1 个答案:

答案 0 :(得分: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.SoapHttpClientProtocol更改为Microsoft.Web.Services3.WebServicesClientProtocol,代码将支持WS Adressing。现在将action元素添加到SOAP标头中。

虽然这种解决方法完成了这项工作,但我仍然更喜欢WCF服务引用连接。