public RequestProcessor(HttpListenerContext context, Dictionary<string, IRequestProcessor> processors, IRequestProcessor defaultProcessor, ICustomLogger logger) { _logger = logger; try { var result = HttpStatusCode.OK; result = !processors.ContainsKey(context.Request.Url.LocalPath.ToLower()) ? defaultProcessor.Process(context, null) : processors[context.Request.Url.LocalPath.ToLower()].Process(context, _presenter); _logger.LogRequest(context.Request.HttpMethod, context.Request.Url.ToString(), result); } catch (MethodNotAllowedException ex) { var result = _presenter.FormatError(HttpStatusCode.MethodNotAllowed, ex.Message); var responseArray = Encoding.UTF8.GetBytes(result); context.Response.StatusCode = (int) HttpStatusCode.MethodNotAllowed; context.Response.ContentType = "text/html; charset=utf-8"; context.Response.ContentLength64 = responseArray.Length; context.Response.OutputStream.Write(responseArray, 0, responseArray.Length); context.Response.OutputStream.Close(); _logger.LogRequest(ex.RequestedMethod, ex.Query, HttpStatusCode.MethodNotAllowed); } catch (MissedParamsException ex) { var result = _presenter.FormatError(HttpStatusCode.Forbidden, ex.Message); var responseArray = Encoding.UTF8.GetBytes(result); context.Response.StatusCode = (int) HttpStatusCode.Forbidden; context.Response.ContentType = "text/html; charset=utf-8"; context.Response.ContentLength64 = responseArray.Length; context.Response.OutputStream.Write(responseArray, 0, responseArray.Length); context.Response.OutputStream.Close(); _logger.LogRequest(context.Request.HttpMethod, ex.Query, HttpStatusCode.Forbidden); } catch (ArgumentNullException ex) { } catch (Exception ex) { if (context != null) { context.Response.StatusCode = (int) HttpStatusCode.InternalServerError; context.Response.OutputStream.Close(); } } }
public async Task Invoke(HttpContext context) { try { await _customlogger.LogRequest(context); await _next(context); } catch (Exception ex) when(ex.Source == System.Reflection.Assembly.GetExecutingAssembly().GetName().Name) { _logger.LogError($"ERROR - MiddlewareThird() - {ex.ToString()}"); throw ex; } }