Est-ce que quelqu'un sait pourquoi la sortie de ce code est seulement: "Message Sended"? Le thread du canal d'entrée attend sur channel.Recieve().IOutputSessionChannel et IInputSessionChannel dans wsHttpBinding, pourquoi cela ne fonctionne pas?
Je n'ai pas ce problème en utilisant basicHttpBinding avec IRequest/ReplyChannel!
static void Main(string[] args)
{
WSHttpBinding binding = new WSHttpBinding();
binding.ReliableSession.Enabled = true;
binding.ReliableSession.Ordered = true;
var messsage = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Soap11, "hello", "action");
var senderFacto = binding.BuildChannelFactory<IOutputSessionChannel>();
var recieveFacto = binding.BuildChannelListener<IInputSessionChannel>(new Uri("http://localhost:9393"));
senderFacto.Open();
recieveFacto.Open();
var sender = senderFacto.CreateChannel(new System.ServiceModel.EndpointAddress("http://localhost:9393"));
sender.Open();
sender.BeginSend(messsage, (o) =>
{
sender.EndSend(o);
Console.WriteLine("Message Sended");
sender.Close();
},null);
recieveFacto.BeginAcceptChannel((o) =>
{
var channel = recieveFacto.EndAcceptChannel(o);
channel.Open();
var message = channel.Receive();
Console.WriteLine("Message Recieved");
},null);
Console.Read();
}
Solution Éteignez la sécurité sur le canal, puis changer la version du message à Soap12Adressing10
binding.Security.Mode = SecurityMode.None; //Turn off the security
var messsage = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "hello", "action"); //Change message version
Merci,
Grande spéculation! En désactivant la sécurité, une exeption a été lancée par l'expéditeur.BeginSend qui dit d'utiliser la version du message Soap12Adressing10. La désactivation de la sécurité et la modification de la version du message ont résolu le problème. Merci ! –