public async Task Request(string url, HttpContext context, Document document) { var data = GetTime(url); if (data != null) { AddDocument(url, data.Id, document); data.Count++; return; } Add(url, document); if (_next != null) { await _next.Request(url, context, document); } }
public async Task InvokeAsync(HttpContext context) { Document document = new Document(); document.Start = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); string authHeader = context.Request.Headers["Authorization"]; string url = context.Request.Path.Value.ParseUrl(); Stream orginalBody = context.Response.Body; try { using (var memStream = new MemoryStream()){ context.Response.Body = memStream; var timer = Stopwatch.StartNew(); await _next(context); document.EllepsitTime = timer.ElapsedMilliseconds; memStream.Position = 0; await memStream.CopyToAsync(orginalBody); document.ResponseStutus = context.Response.StatusCode; if (context.Response.StatusCode != 200) { GetRequest(context, document); GetResponse(memStream, document); Task.Run(async() => { await _service.ErrorResponse(url, context, document); }); } else { Task.Run(async() => { await _service.Request(url, context, document); }); } //old } } finally { context.Response.Body = orginalBody; } }