예제 #1
0
        static void Main(string[] args)
        {
            Uri listenUri            = new Uri("https://127.0.0.1:3721/listener");
            BasicHttpBinding binding = new BasicHttpBinding();

            binding.MessageEncoding = WSMessageEncoding.Mtom;
            binding.ListAllBindingElements();

            binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
            Console.WriteLine("Transport");
            binding.MessageEncoding = WSMessageEncoding.Mtom;
            binding.ListAllBindingElements();

            binding = new BasicHttpBinding(BasicHttpSecurityMode.Message);
            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
            Console.WriteLine("Message");
            binding.MessageEncoding = WSMessageEncoding.Mtom;
            binding.ListAllBindingElements();

            binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
            Console.WriteLine("TransportWithMessageCredential");
            binding.MessageEncoding = WSMessageEncoding.Mtom;
            binding.ListAllBindingElements();

            bool flag = binding.CanBuildChannelFactory <IDuplexChannel>(listenUri);
            //创建,开启信道监听器
            IChannelListener <IReplyChannel> channelListener = binding.BuildChannelListener <IReplyChannel>(listenUri);

            channelListener.Open();
            //创建开启回复信道
            IReplyChannel channel = channelListener.AcceptChannel(TimeSpan.MaxValue);

            channel.Open();


            //开始监听
            while (true)
            {
                //接受输出请求消息
                RequestContext requestContext = channel.ReceiveRequest(TimeSpan.MaxValue);
                Console.WriteLine(requestContext.RequestMessage);
                //消息回复
                requestContext.Reply(CreateReplyMessage(binding));
            }
        }