diff --git a/Mindscape.Raygun4Net.WebApi/Builders/RaygunWebApiRequestMessageBuilder.cs b/Mindscape.Raygun4Net.WebApi/Builders/RaygunWebApiRequestMessageBuilder.cs index a1aff1b6..ef77ffbe 100644 --- a/Mindscape.Raygun4Net.WebApi/Builders/RaygunWebApiRequestMessageBuilder.cs +++ b/Mindscape.Raygun4Net.WebApi/Builders/RaygunWebApiRequestMessageBuilder.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Net.Http; @@ -25,16 +26,25 @@ public static RaygunRequestMessage Build(HttpRequestMessage request, RaygunReque message.Form = ToDictionary(request.GetQueryNameValuePairs(), options.IsFormFieldIgnored); message.QueryString = ToDictionary(request.GetQueryNameValuePairs(), s => false); + SetHeaders(message, request, options.IsHeaderIgnored); + if (!options.IsRawDataIgnored) { - object body; - if (request.Properties.TryGetValue(RaygunWebApiDelegatingHandler.RequestBodyKey, out body)) + string contentType = null; + if (message.Headers != null && message.Headers.Contains("Content-Type")) { - message.RawData = body.ToString(); + contentType = (string)message.Headers["Content-Type"]; } - } - SetHeaders(message, request, options.IsHeaderIgnored); + if (contentType == null || CultureInfo.InvariantCulture.CompareInfo.IndexOf(contentType, "application/x-www-form-urlencoded", CompareOptions.IgnoreCase) < 0) + { + object body; + if (request.Properties.TryGetValue(RaygunWebApiDelegatingHandler.RequestBodyKey, out body)) + { + message.RawData = body.ToString(); + } + } + } return message; } @@ -99,7 +109,7 @@ private static void SetHeaders(RaygunRequestMessage message, HttpRequestMessage } catch (Exception ex) { - System.Diagnostics.Trace.WriteLine("Error retrieving Headers and RawData {0}", ex.Message); + System.Diagnostics.Trace.WriteLine("Error retrieving Headers: {0}", ex.Message); } } } diff --git a/Mindscape.Raygun4Net/Builders/RaygunRequestMessageBuilder.cs b/Mindscape.Raygun4Net/Builders/RaygunRequestMessageBuilder.cs index 8c459f86..d90a87f3 100644 --- a/Mindscape.Raygun4Net/Builders/RaygunRequestMessageBuilder.cs +++ b/Mindscape.Raygun4Net/Builders/RaygunRequestMessageBuilder.cs @@ -44,6 +44,7 @@ public static RaygunRequestMessage Build(HttpRequest request, RaygunRequestMessa { try { + // Don't send the raw request data at all if the content-type is urlencoded var contentType = request.Headers["Content-Type"]; if (contentType != "text/html" && (contentType == null || CultureInfo.InvariantCulture.CompareInfo.IndexOf(contentType, "application/x-www-form-urlencoded", CompareOptions.IgnoreCase) < 0) && request.RequestType != "GET") { @@ -51,6 +52,7 @@ public static RaygunRequestMessage Build(HttpRequest request, RaygunRequestMessa request.InputStream.Seek(0, SeekOrigin.Begin); string temp = new StreamReader(request.InputStream).ReadToEnd(); + // If we made it this far, strip out any values that have been marked as ignored form fields Dictionary ignored = GetIgnoredFormValues(request.Form, options.IsFormFieldIgnored); temp = StripIgnoredFormData(temp, ignored);