public async Task Invoke(HttpContext context) { try { await _next(context); } catch (Exception e) when(StatusCodeFromExceptionBuilder.BadRequestExceptions(e)) { context.Response.StatusCode = (int)StatusCodeFromExceptionBuilder.GetHttpStatusCodeFromException(e); context.Response.ContentType = "text/plain"; await context.Response.WriteAsync(e.Message); } }
public void OnActionExecuted(ActionExecutedContext context) { var result = context.Result as ObjectResult; var responseInfo = new ResponseInfo { TraceIdentifier = context.HttpContext.TraceIdentifier, Path = context.HttpContext.Request.Path, Headers = context.HttpContext.Response.Headers, Result = result?.Value }; if (context.Exception != null) { responseInfo.StatusCode = (int)StatusCodeFromExceptionBuilder.GetHttpStatusCodeFromException(context.Exception); } else { if (result?.StatusCode != null) { responseInfo.StatusCode = (int)result.StatusCode; } } responseInfo.ExceptionMessage = context.Exception?.ToString(); var responseLogMessage = _requestResponseLoggingBuilder.GenerateResponseLogMessage(responseInfo); if (responseInfo.IsServerErrorStatusCode) { _logger.LogError(responseLogMessage); } else { _logger.LogInformation(responseLogMessage); } }