Esempio n. 1
0
        private async Task HandleContextAsync(HttpListenerContext listenerContext)
        {
            // TODO: implement request handling

            var text = new StreamReader(listenerContext.Request.InputStream).ReadToEnd();

            /*Console.WriteLine(text);
             * //var headers = listenerContext.Request.Headers;
             *
             * listenerContext.Response.StatusCode = (int)HttpStatusCode.OK;
             * using (var writer = new StreamWriter(listenerContext.Response.OutputStream))
             * {
             *  var req = listenerContext.Request;
             *  //foreach(var header in headers)
             *  writer.WriteLine("hello");
             * }
             * return;*/

            Console.WriteLine("Обработка");
            var request = listenerContext.Request;

            var method           = DataBaseController.GetMethod(request.HttpMethod);
            var commandParameter = request.RawUrl;

            var stream = new MemoryStream(Encoding.Unicode.GetBytes(text));

            Tuple <HttpStatusCode, Stream> result;

            try
            {
                result = controller.HandleRequest(method, commandParameter, stream);
            }
            catch (Exception e)
            {
                Console.WriteLine("Captured exception " + e);
                result = controller.HandleException(e);
            }
            Console.WriteLine("After");
            using (var writer = new StreamWriter(listenerContext.Response.OutputStream))
            {
                using (var reader = new StreamReader(result.Item2))
                {
                    listenerContext.Response.StatusCode = (int)result.Item1;
                    result.Item2.Position = 0;
                    var answer = reader.ReadToEnd();
                    writer.WriteLine("Answer: " + answer);
                }
            }
        }
Esempio n. 2
0
 public StatServer()
 {
     listener   = new HttpListener();
     controller = new DataBaseController();
 }