protected override async Task <HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { var requestedMethod = request.Method; var userHostAddress = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0:0:0:0"; var userAgent = request.Headers.UserAgent.ToString(); var requestMessage = await request.Content.ReadAsByteArrayAsync(); var urlAccessed = request.RequestUri.AbsoluteUri; var requestHeadersString = new StringBuilder(); foreach (var header in request.Headers) { requestHeadersString.Append($"({header.Key}:"); foreach (var items in header.Value) { requestHeadersString.Append($"[{items}]"); } requestHeadersString.Append(") "); } var logger = new CustomLogger(request); var requestLog = new ApiLog { Headers = requestHeadersString.ToString(), AbsoluteUri = urlAccessed, Host = userHostAddress, RequestBody = Encoding.UTF8.GetString(requestMessage), UserHostAddress = userHostAddress, Useragent = userAgent, RequestedMethod = requestedMethod.ToString(), StatusCode = string.Empty, Guid = logger.ReferenceId, RequestType = "Request" }; logger.AppendLog("Now Logging Request Object", requestLog); logger.AppendLog(Environment.NewLine); var response = await base.SendAsync(request, cancellationToken); var strIsCorsEnabled = ConfigurationManager.AppSettings.Get("EnableCors"); if (strIsCorsEnabled != null) { bool IsCorsEnabled = Convert.ToBoolean(strIsCorsEnabled.Trim().ToLower()); if (IsCorsEnabled) { response.Headers.TryGetValues("Access-Control-Allow-Origin", out IEnumerable <string> name); if (name == null || name.Count() == 0) { response.Headers.Add("Access-Control-Allow-Origin", "*"); } else { response.Headers.Remove("Access-Control-Allow-Origin"); response.Headers.Add("Access-Control-Allow-Origin", "*"); } } } var strIncludeGuidReferenceIdInResponse = ConfigurationManager.AppSettings.Get("IncludeGuidInResponseHeader"); if (strIncludeGuidReferenceIdInResponse != null) { bool IncludeGuidReferenceInResponse = Convert.ToBoolean(strIncludeGuidReferenceIdInResponse.Trim().ToLower()); if (IncludeGuidReferenceInResponse) { response.Headers.Add(logger.GuidKeyName, logger.ReferenceId); } } var responseHeadersString = new StringBuilder(); foreach (var header in response.Headers) { responseHeadersString.Append($"({header.Key}:"); foreach (var items in header.Value) { responseHeadersString.Append($"[{items}]"); } responseHeadersString.Append(") "); } byte[] responseMessage; if (response.IsSuccessStatusCode) { responseMessage = await response.Content.ReadAsByteArrayAsync(); } else { responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase); } var responseLog = new ApiLog { RequestType = "Response", AbsoluteUri = urlAccessed, Host = userHostAddress, RequestBody = Encoding.UTF8.GetString(responseMessage), UserHostAddress = userHostAddress, Useragent = userAgent, RequestedMethod = requestedMethod.ToString(), StatusCode = response.StatusCode.ToString(), Guid = logger.ReferenceId, Headers = responseHeadersString.ToString() }; logger.AppendLog("Logging Response Object", responseLog); logger.CommitLog(); return(response); }