Esempio n. 1
0
        /// <summary>
        /// Accepts an incoming HTTP request
        /// </summary>
        /// <param name="context">The HTTP listener context</param>
        /// <returns>Returns a task that will complete when the request has been handled</returns>
        protected async Task Accept(HttpListenerContext context)
        {
            var request          = context.Request;
            var remote           = request.RemoteEndPoint?.ToString();
            var resourceRequest  = new HttpListenerRequestAdapter(context.Request, context.User);
            var resourceResponse = new HttpListenerResponseAdapter(context.Response);

            try
            {
                await _resourceRouter.Route(resourceRequest, resourceResponse);
            }
            catch (Exception ex)
            {
                var exceptionHandler = new HttpExceptionHandler(resourceRequest, resourceResponse, _diagnosticService);
                exceptionHandler.HandleException(ex);
            }
            finally
            {
                context.Response.Close();
            }

            await _diagnosticService.EmitAsync(
                new HttpEventBuilder(this, HttpEventType.HttpResponseSent)
            {
                Remote = remote,
                Uri    = request.Url,
                Method = request.HttpMethod
            }.Build());
        }
Esempio n. 2
0
        public async Task ProcessRequestAsync(HttpContextBase context)
        {
            Log.DebugFormat("[Process {0}, Thread {1}, AppDomain {2}]",
                Process.GetCurrentProcess().Id,
                Thread.CurrentThread.ManagedThreadId,
                AppDomain.CurrentDomain.Id);

            Log.DebugFormat("Processing {0} request for resource {1} (HTTP handler instance: {2})...",
                context.Request.HttpMethod, context.Request.Url, _instanceId);
            var resourceRequest = new HttpRequestAdapter(context.Request, context.User);
            var resourceResponse = new HttpResponseAdapter(context.Response);
            try
            {
                var resourceRouter = await BusManager.SingletonInstance.GetResourceRouter();
                await resourceRouter.Route(resourceRequest, resourceResponse);
                Log.DebugFormat("Processing {0} request for resource {1} (HTTP handler instance: {2})...",
                    context.Request.HttpMethod, context.Request.Url, _instanceId);
            }
            catch (Exception ex)
            {
                var exceptionHandler = new HttpExceptionHandler(resourceRequest, resourceResponse, Log);
                exceptionHandler.HandleException(ex);
            }
        }
Esempio n. 3
0
        protected async Task Accept(HttpListenerContext context)
        {
            var resourceRequest = new HttpListenerRequestAdapter(context.Request, context.User);
            var resourceResponse = new HttpListenerResponseAdapter(context.Response);
            try
            {
                Log.DebugFormat("Routing {0} request for resource {1} from {2}...",
                    context.Request.HttpMethod, context.Request.Url, context.Request.RemoteEndPoint);

                await _resourceRouter.Route(resourceRequest, resourceResponse);

                Log.DebugFormat("{0} request for resource {1} handled successfully",
                    context.Request.HttpMethod, context.Request.Url);
            }
            catch (Exception ex)
            {
                var exceptionHandler = new HttpExceptionHandler(resourceRequest, resourceResponse, Log);
                exceptionHandler.HandleException(ex);
            }
            finally
            {
                context.Response.Close();
            }
        }