J'essaye d'écrire un MessageHeader aux OutgoingMessageHeaders mais la valeur ne colle pas.WCF OutgoingMessageHeaders n'enregistrant pas les valeurs
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1003/Client.svc");
IClientService serviceClient = new ChannelFactory<IClientService>(basicHttpBinding, endpointAddress).CreateChannel();
// attempt 1
using (OperationContextScope scope = new OperationContextScope(serviceClient as IContextChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("SessionId","","ABC"));
}
// attempt 2
using (OperationContextScope scope = new OperationContextScope(serviceClient as IContextChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("SessionId","","ABC"));
}
OK, vous pouvez voir que je suis en train OutgoingMessageHeaders deux fois, mais qui est tout simplement de prouver un point. Dans la deuxième tentative, avant de faire l'ajout réel, j'inspecte le OperationContext.Current.OutgoingMessageHeaders. Je m'attendrais à ce que cela ait une entrée. Mais c'est zéro. Dès qu'il sort de la portée d'utilisation, la valeur est perdue. Lorsque cela est transmis au serveur, il indique qu'il ne peut pas trouver l'en-tête du message, indiquant que, pour ce qui le concerne, il n'a pas été enregistré non plus.
Pourquoi mon MessageHeader ne colle-t-il pas?
Jeff
exactement - vous devez réellement ** FAIRE ** l'appel dans le bloc using()! –
Arghh. Bien sûr! J'espérais être en mesure de mettre cela en un seul endroit au moment où je reçois le proxy alors tous mes appels en utilisant le proxy n'a pas eu à être changé. On dirait que je vais devoir utiliser des comportements et ajuster les messages de cette façon. Le problème que je vois avec cette approche est que cela empêcherait les méthodes de service d'être utilisables par quelque chose qui n'utilise pas WCF :-( –