修改WCF客户端中SOAP头部的Mustunderstand属性。

3
我正在为一个非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中打开。 - Ladislav Mrnka
服务不喜欢这个头。出现了以下异常System.ServiceModel.ProtocolException: 未处理的'mustUnderstand'头元素:{http://www.w3.org/2005/08/addressing}Action。在问题中添加了我的自定义绑定代码。 - Amzath
2个回答

5

我通过将AddressingVersion设置为None来解决了这个问题,这样就不会放置SOAP头。

以下是代码:

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

多年过去了,这似乎仍然是一个问题。然而,这个修复方法对我没有起作用。在我的安全头中,Mustunderstand="1" 仍然存在。 - Jereme

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接