J'ajoute un en-tête personnalisé WCF avec le code suivant avec ceci, je souhaite également ajouter p> comme attribut à cet en-tête de message. p> existe-t-il un moyen d'ajouter un espace de noms ci-dessus et d'attribuer à l'en-tête de message? p> p>
3 Réponses :
Définissez une classe XMLSerializable qui sertiale au format XML Element que vous souhaitez pour votre en-tête. Ensuite, passez une instance de cette classe en tant que paramètre code> valeur code> de MessageHeader.createheader code>. P>
J'ai trouvé une solution. Nous devons mettre en œuvre l'en-tête Custome, qui est introuvable de la classe de messagerie. P>
La classe de messagerie de messagerie a une méthode De plus, nous devons remplacer la méthode Onriteheadercontents () et écrire XML ou Valeur que nous voulons comme message de messagerie. P>
Une fois que cela est prêt lors de l'ajout de l'en-tête de message dans demande.Header.add () Objet Pass de notre classe d'en-tête personnalisée. P>
Reportez-vous après des liens plus de détails. P>
http: // social.msdn.microsoft.com/forums/en-us/wfcf/thread/c2a39df8-3943-4c41-acca-6da8e96f0dff P> ONWRITESTARTHeader () code>. Nous pouvons ajouter des espaces de noms XML dans cette méthode. P>
Si vous utilisez la classe Adressheader, il ajoute automatiquement l'attribut IsreferenceParameter. La méthode d'extension suivante à la canalyse de canalisation ferait ce que vous vouliez.
public static void AddHeader<T>(this ChannelFactory<T> factory, string headerName, string value, string nameSpace) { var endpointAddressBuilder = new EndpointAddressBuilder(factory.Endpoint.Address); endpointAddressBuilder.Headers.Add(AddressHeader.CreateAddressHeader(headerName, nameSpace, value)); factory.Endpoint.Address = endpointAddressBuilder.ToEndpointAddress(); }