Esempio n. 1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var apiLogEntry = CreateApiLogEntryWithRequestData(request);

            if (request.Content != null)
            {
                await request.Content.ReadAsStringAsync()
                .ContinueWith(task =>
                {
                    apiLogEntry.RequestContentBody = task.Result;
                }, cancellationToken);
            }

            return(await base.SendAsync(request, cancellationToken)
                   .ContinueWith(task =>
            {
                var response = task.Result;
                apiLogEntry.User = request.GetRequestContext().Principal.Identity.Name;

                apiLogEntry.ResponseStatusCode = (int)response.StatusCode;
                apiLogEntry.ResponseTimestamp = DateTime.Now;

                if (response.Content != null)
                {
                    apiLogEntry.ResponseContentType = response.Content.Headers.ContentType.MediaType;
                    apiLogEntry.ResponseContentBody = response.Content.ReadAsStringAsync().Result;
                    apiLogEntry.ResponseHeaders = SerializeHelper.SerializeHeaders(response.Content.Headers);
                }

                _activityLogService.Add(apiLogEntry);

                return response;
            }, cancellationToken));
        }
Esempio n. 2
0
        public override async Task Invoke(IOwinContext context)
        {
            await Task.Run(() => {
                string body = new StreamReader(context.Request.Body).ReadToEnd();

                if (!string.IsNullOrEmpty(body))
                {
                    var apiLogEntry = GetApiLogEntry(context);
                    apiLogEntry.RequestContentBody = body;

                    byte[] requestData   = Encoding.UTF8.GetBytes(body);
                    context.Request.Body = new MemoryStream(requestData);

                    _apiActivityLogService.Add(apiLogEntry);
                }
            });

            await Next.Invoke(context);
        }