private static Message ConfigureRequestMessage(Message message) { if (message == null) { return(null); } HttpRequestMessageProperty requestProperty = message.GetHttpRequestMessageProperty(); if (requestProperty == null) { throw new InvalidOperationException( string.Format( CultureInfo.CurrentCulture, SR.RequestMissingHttpRequestMessageProperty, HttpRequestMessageProperty.Name, typeof(HttpRequestMessageProperty).FullName)); } Uri uri = message.Headers.To; if (uri == null) { throw new InvalidOperationException(SR.RequestMissingToHeader); } HttpRequestMessage httpRequestMessage = message.ToHttpRequestMessage(); if (httpRequestMessage == null) { httpRequestMessage = new HttpRequestMessage(); httpRequestMessage.Content = new StringContent(String.Empty); httpRequestMessage.Content.Headers.ContentLength = 0; message.Close(); message = httpRequestMessage.ToMessage(); } else { message.Headers.Clear(); message.Properties.Clear(); httpRequestMessage.Headers.Clear(); httpRequestMessage.GetProperties().Clear(); } message.Headers.To = uri; httpRequestMessage.RequestUri = uri; httpRequestMessage.Method = new HttpMethod(requestProperty.Method); foreach (var headerName in requestProperty.Headers.AllKeys) { if (headerName.StartsWith("content-", StringComparison.OrdinalIgnoreCase) || headerName.Equals("Allow", StringComparison.OrdinalIgnoreCase) || headerName.Equals("Expires") || headerName.Equals("Expires", StringComparison.OrdinalIgnoreCase)) { httpRequestMessage.Content.Headers.Remove(headerName); httpRequestMessage.Content.Headers.Add(headerName, requestProperty.Headers[headerName]); continue; } httpRequestMessage.Headers.Remove(headerName); httpRequestMessage.Headers.Add(headerName, requestProperty.Headers[headerName]); } return(message); }