IOutputSessionChannel и IInputSessionChannel в wsHttpBinding, почему это не работает? - PullRequest
0 голосов
/ 25 февраля 2009

Кто-нибудь знает, почему вывод этого кода только: «Сообщение отправлено»? Поток входного канала ждет на channel.Recieve ().

У меня нет этой проблемы при использовании basicHttpBinding с 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();
    }

Решение Отключите защиту на канале, затем измените версию сообщения на Soap12Adressing10

binding.Security.Mode = SecurityMode.None; //Turn off the security
var messsage = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "hello", "action"); //Change message version 

Спасибо

1 Ответ

1 голос
/ 25 февраля 2009

Вот быстрое предположение: безопасность может быть на пути. Я думаю, что WSHttpBinding является безопасным по умолчанию. Попробуйте отключить безопасность. Если это заставляет его работать, следующий шаг, чтобы заставить это работать с безопасностью, включает использование BindingParameters, чтобы указать, что "действие" является одним из законных действий для Сообщений на этом канале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...