J'essaie de transférer des informations d'utilisateur dans l'en-tête du message via les inspecteurs de message.Comment transférer des objets via l'en-tête dans WCF
J'ai créé un comportement qui ajoute l'inspecteur au service (client et serveur).
Mais lorsque je tente de communiquer avec le service que je reçois l'erreur suivante:
XmlException:
nom ne peut pas commencer par le caractère « < », valeur hexadécimale 0x3C.
J'ai également l'exception me disant que DataContracts où inattendu.
Type 'System.DelegateSerializationHolder+DelegateEntry' with data contract name 'DelegateSerializationHolder.DelegateEntry: http://schemas.datacontract.org/2004/07/System ' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
La chose est que mon objet contient d'autres objets qui sont marqués comme DataContract et je ne suis pas intéressé d'ajouter l'attribut KnownType
pour ces types.
Un autre problème pourrait être que mon objet à sérialiser est très limité sous forme de classe interne et les propriétés internes, etc.
Quelqu'un peut-il me guider dans la bonne direction. Qu'est-ce que je fais mal?
Certains code:
public virtual object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var header = MessageHeader.CreateHeader("<name>", "<namespace>", object);
request.Headers.Add(header);
return Guid.NewGuid();
}
Désolé pour le malentendu mais les crochets ne sont là que pour illustrer que c'était un nom et un espace de noms. Je peux voir la confusion en ce qui concerne le message d'erreur. Non, le code réel est sans chevrons, mais l'espace de noms est un espace de noms http: // formatet. – Michael