예제 #1
0
        public static void Snippet22()
        {
            BasicHttpBinding binding = new BasicHttpBinding();
            //CustomBinding binding = new CustomBinding();
            //binding.Elements.Add(new HttpTransportBindingElement());

            BindingParameterCollection       paramCollection = new BindingParameterCollection();
            IChannelListener <IReplyChannel> listener        = binding.BuildChannelListener <IReplyChannel>
                                                                   (new Uri("http://localhost:8000/ChannelApp"), paramCollection);

            listener.Open();
            IReplyChannel channel = listener.AcceptChannel();

            Console.WriteLine("Listening for messages");
            channel.Open();
            RequestContext request = channel.ReceiveRequest();
            Message        msg     = request.RequestMessage;

            Console.WriteLine("Message Received");
            Console.WriteLine("Message Action: {0}", msg.Headers.Action);

            if (msg.Headers.Action == "hello")
            {
                Message reply = Message.CreateMessage(MessageVersion.Soap11, "wcf");
                request.Reply(reply);
            }

            msg.Close();
            channel.Close();
            listener.Close();
        }
예제 #2
0
        static void Main(string[] args)
        {
            Uri     listenUri = new Uri("http://127.0.0.1:1357/listener");
            Binding binding   = new BasicHttpBinding();

            //创建,开启信道监听器
            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));
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            //创建监听地址和绑定
            Uri     listenUri = new Uri("http://localhost:9999/listener");
            Binding binding   = new BasicHttpBinding();
            //通过监听地址创建信道监听器
            IChannelListener <IReplyChannel> channelListener = binding.BuildChannelListener <IReplyChannel>(listenUri);

            //开启信道监听器
            channelListener.Open();

            //通过信道监听器对象创建回复信道对象
            IReplyChannel channel = channelListener.AcceptChannel(TimeSpan.MaxValue);

            //开启回复信道
            channel.Open();

            Console.WriteLine("开始监听...");

            while (true)
            {
                //通过回复信道创建请求文本对象
                RequestContext requestContext = channel.ReceiveRequest(TimeSpan.MaxValue);
                //输出请求文本对象里存储的从请求端发送的请求信息
                Console.WriteLine("接收到请求消息:\n{0}", requestContext.RequestMessage);
                //通过请求文本对象的Reply()方法向请求端发送回复信息
                requestContext.Reply(CreateReplyMessage(binding));
            }
        }
        public void BuildChannelListenerForHttpEndpoint()
        {
            var b = new BasicHttpBinding();

            b.Security.Mode = BasicHttpSecurityMode.Transport;
            b.BuildChannelListener <IReplyChannel> (new Uri("http://localhost:8080"));
        }
예제 #5
0
        static void Main(string[] args)
        {
            Uri     listenUri = new Uri("http://localhost:9999/listener");
            Binding binding   = new BasicHttpBinding();
            IChannelListener <SimpleReplyChannel> channelListener = binding.BuildChannelListener <SimpleReplyChannel>(listenUri);

            channelListener.Open();

            SimpleReplyChannel channel = channelListener.AcceptChannel(TimeSpan.MaxValue);

            channel.Open();

            Console.WriteLine("开始监听");
        }
예제 #6
0
        static void Main()
        {
            Binding binding = new BasicHttpBinding();
            Uri     address = new Uri("http://localhost:" +
                                      UptimeRequest.ListeningPort);
            DateTime started = DateTime.Now;

            Console.WriteLine("Opening listener at {0}.", address);
            Console.WriteLine("Be sure your firewall allows incoming " +
                              "requests on this port.");
            var listener =
                binding.BuildChannelListener <IReplyChannel>(address);

            listener.Open();
            try {
                var channel = listener.AcceptChannel();
                channel.Open();
                try {
                    while (true)
                    {
                        Console.WriteLine("Waiting for uptime requests.  Press Ctrl+C to stop server.");
                        // Block until a request from the client comes in.
                        var req = channel.ReceiveRequest(TimeSpan.MaxValue);
                        // The request doesn't have anything interesting in
                        // our case, so we won't bother deserializing it.
                        // var uptimeRequest = req.RequestMessage.
                        //     GetBody<UptimeRequest>(
                        //        MessageSerializer.RequestSerializer);

                        // Formulate our response.
                        var uptime = new UptimeResponse()
                        {
                            Uptime = DateTime.Now - started
                        };
                        Console.WriteLine("Uptime request received.  " +
                                          "Sending {0}.", uptime.Uptime);
                        req.Reply(Message.CreateMessage(
                                      binding.MessageVersion, "urn:UptimeResponse",
                                      uptime, MessageSerializer.ResponseSerializer
                                      ));
                    }
                } finally {
                    channel.Close();
                }
            } finally {
                listener.Close();
            }
        }
예제 #7
0
 static void Main(string[] args)
 {
     Uri address = new Uri("http://127.0.0.1:9999/messagingviabinding");
     BasicHttpBinding binding = new BasicHttpBinding();
     IChannelListener<IReplyChannel> channelListener = binding.BuildChannelListener<IReplyChannel>(address);
     channelListener.Open();
     IReplyChannel channel = channelListener.AcceptChannel();
     channel.Open();
     Console.WriteLine("Begin to listen...");
     while (true)
     {
         RequestContext context = channel.ReceiveRequest(new TimeSpan(1, 0, 0));
         Console.WriteLine("Receive a request message:\n{0}", context.RequestMessage);
         Message replyMessage = Message.CreateMessage(MessageVersion.Soap11, "http://artech.messagingviabinding", "This is a mannualy created reply message for the purpose of testing");
         context.Reply(replyMessage);
     }
 }
예제 #8
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));
            }
        }
예제 #9
0
        protected override void InitializeRuntime()
        {
            BindingParameterCollection bpc = new BindingParameterCollection();
            VirtualPathExtension       virtualPathExtension = this.Extensions.Find <VirtualPathExtension>();

            if (virtualPathExtension != null)
            {
                bpc.Add(virtualPathExtension);
            }

            BasicHttpBinding basicHttpBinding = new BasicHttpBinding();

            IChannelListener <IReplyChannel> listener = basicHttpBinding.BuildChannelListener <IReplyChannel>(interestedUri, bpc);

            CustomChannelDispatcher channelDispatcher = new CustomChannelDispatcher(serviceManager, listener);

            this.ChannelDispatchers.Add(channelDispatcher);
        }
예제 #10
0
        static void Main(string[] args)
        {
            // Creating the Binding
            BasicHttpBinding binding = new BasicHttpBinding();

            BindingParameterCollection parameters =
                new BindingParameterCollection();

            IChannelListener <IReplyChannel> listener =
                binding.BuildChannelListener <IReplyChannel>
                    (new Uri("http://<<ServerAddress>>:<<PortNumber>>"),
                    parameters);

            listener.Open();

            XmlSerializerWrapper wrapper =
                new XmlSerializerWrapper(typeof(TransmittedObject));

            // Opening the Channel
            IReplyChannel channel = listener.AcceptChannel();

            channel.Open(TimeSpan.MaxValue);

            // Waiting for and receiving the Message
            RequestContext r =
                channel.ReceiveRequest(TimeSpan.MaxValue);

            TransmittedObject to =
                r.RequestMessage.GetBody <TransmittedObject>(wrapper);

            // Processing the Message
            to.str = to.str + " World";
            to.i   = to.i + 1;

            // Creating the return Message
            Message m = Message.CreateMessage
                            (MessageVersion.Soap11, "urn:test", to, wrapper);

            r.Reply(m, TimeSpan.MaxValue);

            // Cleaning up
            channel.Close();
        }
예제 #11
0
        static void Main(string[] args)
        {
            Uri     listenUri = new Uri(@"http://127.0.0.1:9999/listener");
            Binding binding   = new BasicHttpBinding();
            IChannelListener <IReplyChannel> channelListener = binding.BuildChannelListener <IReplyChannel>(listenUri);

            channelListener.Open();

            IReplyChannel channel = channelListener.AcceptChannel(TimeSpan.MaxValue);

            channel.Open();

            Console.WriteLine("开始监听...");

            while (true)
            {
                RequestContext requestContext = channel.ReceiveRequest(TimeSpan.MaxValue);
                Console.WriteLine("接收到的请求消息: \n{0}", requestContext.RequestMessage);
                requestContext.Reply(CreateReplyMessage(binding));
            }
        }