Je dois utiliser la technique d'interrogation pour informer les clients des changements survenus du côté serveur. J'ai donc essayé d'utiliser DuplexHttpBinding (http://code.msdn.microsoft.com/duplexhttp). Je fonctionne bien avec les messages non sécurisés, mais j'ai besoin d'utiliser la sécurité au niveau des messages dans mon projet (UsernameForCertificate). Ok, j'ai décidé d'ajouter SymmetricSecurityBindingElement à la collection de liens:Sécurité des messages personnalisés WCF
var securityElement = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
collection.Add(securityElement);
Puis un problème est survenu. Si nous utilisons la sécurité au niveau des messages tous les messages incluent les en-têtes de sécurité avec signature du message, comme celui-ci:
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
....
</o:Security>
et les messages de vote personnalisés qui sont envoyés par voie de requête personnalisée n'a pas les en-têtes de sécurité, donc exception se produit lors de l'envoi de ce message à travers le canal avec la sécurité au niveau du message:
System.ServiceModel.Security.MessageSecurityException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
No signature message parts were specified for messages with the 'http://samples.microsoft.com/duplexhttp/pollingAction' action.
S'il vous plaît, solution de conseils comment ajouter des en-têtes de sécurité propres à mes messages de vote personnalisés avant de les envoyer dans le canal de demande personnalisée. Vous pouvez télécharger le code source par le lien posté avant et essayez simplement de l'utiliser avec la sécurité UsernameForCertificate pour reproduire le problème. Merci.
Où appelez-vous votre méthode privée 'ApplyChannelProtectionRequirements' ?. –