public void HandleRequest(HttpListenerRequest request, HttpListenerResponse response) { Files = new List <UploadedFile>(); Request = request; Response = response; if (string.Compare(Request.HttpMethod, "POST", true) == 0) { var content = readPostContent(request); Action action = () => { RawPostData = content.ToArray(); ParseAndHandleRequest(); }; HttpHandlingTask.HandleRequestWithinExceptionHandler(action, Response); return; } ParseAndHandleRequest(); }
/// <summary> /// Connections the accepted. /// </summary> /// <param name="result">The result.</param> private void ConnectionAccepted(IAsyncResult result) { try { var context = m_Listener.EndGetContext(result); if (context == null) { return; } var beginTime = Stopwatch.GetTimestamp(); m_Listener.BeginGetContext(ConnectionAccepted, null); var handler = FindBestMatch(context.Request.Url.AbsolutePath); if (handler == null) { respond404NotFound(context); return; } var task = new HttpHandlingTask(handler, context, beginTime); ThreadPool.QueueUserWorkItem((x) => { task.Execute(); }); } catch (ObjectDisposedException) { m_Logger.Warn("Http server disposed. Shutdown server"); } catch (Exception e) { m_Logger.Warn("Shutdown server", e); } }