diff --git a/src/Ocelot/Errors/Middleware/ExceptionHandlerMiddleware.cs b/src/Ocelot/Errors/Middleware/ExceptionHandlerMiddleware.cs
index ea5d2c84..dc36fd94 100644
--- a/src/Ocelot/Errors/Middleware/ExceptionHandlerMiddleware.cs
+++ b/src/Ocelot/Errors/Middleware/ExceptionHandlerMiddleware.cs
@@ -6,6 +6,9 @@ using Ocelot.Logging;
namespace Ocelot.Errors.Middleware
{
+ ///
+ /// Catches all unhandled exceptions thrown by middleware, logs and returns a 500
+ ///
public class ExceptionHandlerMiddleware
{
private readonly RequestDelegate _next;
diff --git a/src/Ocelot/Responder/Middleware/ResponderMiddleware.cs b/src/Ocelot/Responder/Middleware/ResponderMiddleware.cs
index 6bce4ac6..10a10c66 100644
--- a/src/Ocelot/Responder/Middleware/ResponderMiddleware.cs
+++ b/src/Ocelot/Responder/Middleware/ResponderMiddleware.cs
@@ -1,73 +1,73 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Http;
-using Microsoft.Extensions.Logging;
-using Ocelot.Errors;
-using Ocelot.Infrastructure.RequestData;
-using Ocelot.Logging;
-using Ocelot.Middleware;
-
-namespace Ocelot.Responder.Middleware
-{
- public class ResponderMiddleware : OcelotMiddleware
- {
- private readonly RequestDelegate _next;
- private readonly IHttpResponder _responder;
- private readonly IErrorsToHttpStatusCodeMapper _codeMapper;
- private readonly IOcelotLogger _logger;
-
- public ResponderMiddleware(RequestDelegate next,
- IHttpResponder responder,
- IOcelotLoggerFactory loggerFactory,
- IRequestScopedDataRepository requestScopedDataRepository,
- IErrorsToHttpStatusCodeMapper codeMapper)
- :base(requestScopedDataRepository)
- {
- _next = next;
- _responder = responder;
- _codeMapper = codeMapper;
- _logger = loggerFactory.CreateLogger();
-
- }
-
- public async Task Invoke(HttpContext context)
- {
- _logger.LogDebug("started error responder middleware");
-
- await _next.Invoke(context);
-
- _logger.LogDebug("calling next middleware");
-
- if (PipelineError)
- {
- _logger.LogDebug("there is a pipeline error, getting errors");
-
- var errors = PipelineErrors;
-
- _logger.LogDebug("received errors setting error response");
-
- SetErrorResponse(context, errors);
- }
- else
- {
- _logger.LogDebug("no pipeline error, setting response");
-
- await _responder.SetResponseOnHttpContext(context, HttpResponseMessage);
- }
- }
-
- private void SetErrorResponse(HttpContext context, List errors)
- {
- var statusCode = _codeMapper.Map(errors);
-
- if (!statusCode.IsError)
- {
- _responder.SetErrorResponseOnContext(context, statusCode.Data);
- }
- else
- {
- _responder.SetErrorResponseOnContext(context, 500);
- }
- }
- }
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Ocelot.Errors;
+using Ocelot.Infrastructure.RequestData;
+using Ocelot.Logging;
+using Ocelot.Middleware;
+
+namespace Ocelot.Responder.Middleware
+{
+ ///
+ /// Completes and returns the request and request body, if any pipeline errors occured then sets the appropriate HTTP status code instead.
+ ///
+ public class ResponderMiddleware : OcelotMiddleware
+ {
+ private readonly RequestDelegate _next;
+ private readonly IHttpResponder _responder;
+ private readonly IErrorsToHttpStatusCodeMapper _codeMapper;
+ private readonly IOcelotLogger _logger;
+
+ public ResponderMiddleware(RequestDelegate next,
+ IHttpResponder responder,
+ IOcelotLoggerFactory loggerFactory,
+ IRequestScopedDataRepository requestScopedDataRepository,
+ IErrorsToHttpStatusCodeMapper codeMapper)
+ :base(requestScopedDataRepository)
+ {
+ _next = next;
+ _responder = responder;
+ _codeMapper = codeMapper;
+ _logger = loggerFactory.CreateLogger();
+
+ }
+
+ public async Task Invoke(HttpContext context)
+ {
+ _logger.LogDebug($"entered {this.GetType().Name}");
+ _logger.LogDebug($"invoking next middleware from {this.GetType().Name}");
+
+ await _next.Invoke(context);
+
+ _logger.LogDebug($"returned to {this.GetType().Name} after next middleware completed");
+
+ if (PipelineError)
+ {
+ var errors = PipelineErrors;
+ _logger.LogDebug($"{errors.Count} pipeline errors found in {this.GetType().Name}. Setting error response status code");
+
+ SetErrorResponse(context, errors);
+ }
+ else
+ {
+ _logger.LogDebug("no pipeline errors, setting and returning completed response");
+ await _responder.SetResponseOnHttpContext(context, HttpResponseMessage);
+ }
+ _logger.LogDebug($"completed {this.GetType().Name}");
+ }
+
+ private void SetErrorResponse(HttpContext context, List errors)
+ {
+ var statusCode = _codeMapper.Map(errors);
+
+ if (!statusCode.IsError)
+ {
+ _responder.SetErrorResponseOnContext(context, statusCode.Data);
+ }
+ else
+ {
+ _responder.SetErrorResponseOnContext(context, 500);
+ }
+ }
+ }
}
\ No newline at end of file