2010-11-12 4 views
1

J'écris un client WCF pour un service (pas WCF). Obtention d'une erreur que l'élément d'en-tête Unprocessed 'mustUnderstand': {http://www.w3.org/2005/08/addressing}Action, car la requête SOAP contient un en-tête avec mustunderstand = 'true'. Je dois soit le mettre faux ou enlever l'en-tête entier. Pouvez-vous montrer le chemin pour le faire?Modifier l'en-tête SOAP Attribut Mustunderstand dans le client WCF

Voici le code

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; 
+0

Pourquoi avez-vous besoin de retirer l'en-tête? Quelle liaison utilisez-vous dans votre client? L'en-tête metioned provient de WS-Addressing, qui peut également être activé dans WCF. –

+0

Le service n'a pas aimé l'en-tête. Obtention de cette exception System.ServiceModel.ProtocolException: élément d'en-tête "mustUnderstand" non traité: {http://www.w3.org/2005/08/addressing}Action. Ajouté mon code de liaison personnalisé dans la question – Amzath

Répondre

2

liant Je résolus celui-ci en mettant à AddressingVersion Aucun qui n'a pas mis les en-têtes SOAP.

est ici le code

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

Il est de nombreuses années plus tard et cela semble toujours être un problème. Cependant, cette solution n'a pas fonctionné pour moi. Mustunderstand = "1" existe toujours dans mon en-tête de sécurité. –

0

Spécification du MessageVersion résolu mon problème. <mtomMessageEncoding messageVersion="Soap12"/>