Exemplo n.º 1
0
        /// <summary>
        /// 开启监听
        /// </summary>
        /// <param name="handler"></param>
        /// <returns></returns>
        public async Task StartAsync(RequestDelegate handler)
        {
            Array.ForEach(_urls, url => _httpListener.Prefixes.Add(url));
            _httpListener.Start();
            Console.WriteLine("Server started and is listening on: {0}", string.Join(';', _urls));

            while (true)
            {
                //1.监听到Http请求,生成自己的上下文
                HttpListenerContext listenerContext = await _httpListener.GetContextAsync();

                //2.生成feature适配
                var feature  = new HttpListenerFeature(listenerContext);
                var features = new FeatureCollection()
                               .Set <IHttpRequestFeature>(feature)
                               .Set <IHttpResponseFeature>(feature);

                //3.由feature生成HttpContext
                var httpContext = new HttpContext(features);

                //4.进入HttpHandler
                await handler(httpContext);

                //5.结束
                listenerContext.Response.Close();
            }
        }
Exemplo n.º 2
0
        public async Task StartAsync(RequestDelegate handler)
        {
            Array.ForEach(_urls, url => _httpListener.Prefixes.Add(url));
            _httpListener.Start();
            while (true)
            {
                var listenerContext = await _httpListener.GetContextAsync();

                var feature  = new HttpListenerFeature(listenerContext);
                var features = new FeatureCollection()
                               .Set <IHttpRequestFeature>(feature)
                               .Set <IHttpResponseFeature>(feature);
                var httpContext = new HttpContext(features);
                await handler(httpContext);

                listenerContext.Response.Close();
            }
        }
Exemplo n.º 3
0
        public async Task StartAsync(RequestDelegate handler)
        {
            Array.ForEach(_urls, url => _httpListener.Prefixes.Add(url));
            _httpListener.Start();
            while (true)
            {
                var listenerContext = await _httpListener.GetContextAsync();

                // 打印状态行: 请求方法, URL, 协议版本
                Console.WriteLine("{0} {1} HTTP/{2}",
                                  listenerContext.Request.HttpMethod,
                                  listenerContext.Request.RawUrl,
                                  listenerContext.Request.ProtocolVersion);

                var feature  = new HttpListenerFeature(listenerContext);
                var features = new FeatureCollection()
                               .Set <IHttpRequestFeature>(feature)
                               .Set <IHttpResponseFeature>(feature);
                var httpContext = new HttpContext(features);
                await handler(httpContext);

                listenerContext.Response.Close();
            }
        }