Beispiel #1
0
        public async Task Invoke(HttpContext context, IApiRequestLogger logger)
        {
            await logger.PushRequestAsync(context);

            var originalBodyStream = context.Response.Body;

            try
            {
                using (var tempResponseBody = new MemoryStream())
                {
                    context.Response.Body = tempResponseBody;

                    await _next(context);

                    await logger.PushResponseAsync(context, tempResponseBody);

                    await tempResponseBody.CopyToAsync(originalBodyStream);
                }
            }
            finally
            {
                context.Response.Body = originalBodyStream;
                logger.LogCompletedRequest();
            }
        }