【问题标题】:Modify SOAP header Mustunderstand attribute in WCF client修改 WCF 客户端中的 SOAP 标头 Mustunderstand 属性
【发布时间】:2011-05-09 08:39:38
【问题描述】:

我正在为服务(不是 WCF)编写 WCF 客户端。收到未处理的“mustUnderstand”标头元素的错误:{http://www.w3.org/2005/08/addressing}Action,因为请求 SOAP 包含带有 mustunderstand='true' 的标头。我必须将其设置为 false 或删除整个标题。你能告诉我怎么做吗?

这里是绑定代码

var transportElement = new HttpsTransportBindingElement();
        transportElement.AuthenticationScheme = AuthenticationSchemes.Basic;

        var messegeElement = new TextMessageEncodingBindingElement();
        messegeElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap11);

        var binding = new CustomBinding(messegeElement, transportElement);
        return binding;

【问题讨论】:

  • 为什么需要去掉表头?您在客户端中使用什么绑定?提到的标头来自 WS-Addressing,也可以在 WCF 中打开。
  • 服务不喜欢标题。得到这个异常 System.ServiceModel.ProtocolException: Unprocessed 'mustUnderstand' header element: {w3.org/2005/08/addressing}Action。在问题中添加了我的自定义绑定代码

标签: wcf soap wcf-client soapheader


【解决方案1】:

指定 messageVersion 解决了我的问题。 <mtomMessageEncoding messageVersion="Soap12"/>

【讨论】:

    【解决方案2】:

    我通过将未放置 SOAP 标头的 AddressingVersion 设置为 None 解决了这个问题。

    这里是代码

    MessageVersion.CreateVersion(EnvelopeVersion.Soap11, AddressingVersion.None)
    

    【讨论】:

    • 多年后,这似乎仍然是一个问题。但是,此修复对我不起作用。 Mustunderstand="1" 仍然存在于我的安全标头中。
    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2016-05-23
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多