private void FillSampledTransactionContextRequest(HttpContext context, Transaction transaction) { if (context.Request == null) { return; } var url = new Url { Full = context.Request.GetEncodedUrl(), HostName = context.Request.Host.Host, Protocol = GetProtocolName(context.Request.Protocol), Raw = GetRawUrl(context.Request) ?? context.Request.GetEncodedUrl(), PathName = context.Request.Path, Search = context.Request.QueryString.Value.Length > 0 ? context.Request.QueryString.Value.Substring(1) : string.Empty }; Dictionary <string, string> requestHeaders = null; if (_configurationReader.CaptureHeaders) { requestHeaders = new Dictionary <string, string>(); foreach (var header in context.Request.Headers) { requestHeaders.Add(header.Key, header.Value.ToString()); } } var body = Consts.BodyRedacted; // According to the documentation - the default value of 'body' is '[Redacted]' if (!string.IsNullOrEmpty(context?.Request?.ContentType)) { var contentType = new ContentType(context.Request.ContentType); if (_configurationReader.ShouldExtractRequestBodyOnTransactions() && _configurationReader.CaptureBodyContentTypes.ContainsLike(contentType.MediaType)) { body = context.Request.ExtractRequestBody(_logger); } } transaction.Context.Request = new Request(context.Request.Method, url) { Socket = new Socket { Encrypted = context.Request.IsHttps, RemoteAddress = context.Connection?.RemoteIpAddress?.ToString() }, HttpVersion = GetHttpVersion(context.Request.Protocol), Headers = requestHeaders, Body = (string.IsNullOrEmpty(body) ? Consts.BodyRedacted : body) }; }
private string GetRequestBody(HttpRequest request) { // ReSharper disable once InvertIf if (_configurationReader.ShouldExtractRequestBodyOnTransactions() && !string.IsNullOrEmpty(request?.ContentType)) { var contentType = new ContentType(request.ContentType); if (_configurationReader.CaptureBodyContentTypes.ContainsLike(contentType.MediaType)) { return(request.ExtractRequestBody(_logger) ?? Consts.BodyRedacted); } } // According to the documentation - the default value of 'body' is '[Redacted]' return(Consts.BodyRedacted); }