public object BeforeSendRequest(ref Message request, IClientChannel channel) { // get the request URI var requestUri = GetRequestUri(request); webRequestTracer = action.TraceWebRequest(requestUri); webRequestTracer.Start(); // add Dynatrace custom header for tracing object httpRequestMessageObject; if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out httpRequestMessageObject)) { var httpRequestMessage = httpRequestMessageObject as HttpRequestMessageProperty; if (string.IsNullOrWhiteSpace(httpRequestMessage.Headers[OpenKitConstants.WEBREQUEST_TAG_HEADER])) { httpRequestMessage.Headers[OpenKitConstants.WEBREQUEST_TAG_HEADER] = webRequestTracer.Tag; } } else { // request properties does not contain request message properties - just for safety reasons var httpRequestMessage = new HttpRequestMessageProperty(); httpRequestMessage.Headers.Add(OpenKitConstants.WEBREQUEST_TAG_HEADER, webRequestTracer.Tag); request.Properties.Add(HttpRequestMessageProperty.Name, httpRequestMessage); } return(null); }