-
Notifications
You must be signed in to change notification settings - Fork 293
Description
Error:
AI (Internal): [Microsoft-ApplicationInsights-Extensibility-Web] Unknown error, message System.UriFormatException: Invalid URI: The hostname could not be parsed.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Web.Util.UriUtil.BuildUriImpl(String scheme, String serverName, String port, String path, String queryString, Boolean useLegacyRequestUrlGeneration)
at System.Web.HttpRequest.BuildUrl(Func1 pathAccessor)
at System.Web.UnvalidatedRequestValues.get_Url()
at Microsoft.ApplicationInsights.Common.RequestTrackingUtilities.UpdateRequestTelemetryFromRequest(RequestTelemetry requestTelemetry, HttpRequest request, IApplicationIdProvider applicationIdProvider)
at Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule.OnEndRequest(HttpContext context)
at Microsoft.ApplicationInsights.Web.AspNetDiagnosticTelemetryModule.AspNetEventObserver.OnNext(KeyValuePair2 value)
Source:
ApplicationInsights-dotnet/WEB/Src/Common/RequestTrackingUtilities.cs
Lines 20 to 30 in 35e4bb2
| internal static void UpdateRequestTelemetryFromRequest(RequestTelemetry requestTelemetry, HttpRequest request, IApplicationIdProvider applicationIdProvider) | |
| { | |
| if (requestTelemetry == null || request == null) | |
| { | |
| return; | |
| } | |
| if (requestTelemetry.Url == null) | |
| { | |
| requestTelemetry.Url = request.Unvalidated.Url; | |
| } |
The getter for the Unvalidated Url is failing to parse and create a Uri object.
Should we wrap this in a try/catch and ignore the Exception?
Internal Call Stack:
https://referencesource.microsoft.com/#System.Web/UnvalidatedRequestValues.cs,144
public sealed class UnvalidatedRequestValues { private Uri _url; public Uri Url { get { if (_url == null) { _url = _request.BuildUrl(() => Path); } return _url; } }
https://referencesource.microsoft.com/#System/net/System/UriExt.cs,32
private void CreateThis(string uri, bool dontEscape, UriKind uriKind) { // if (!Enum.IsDefined(typeof(UriKind), uriKind)) -- We currently believe that Enum.IsDefined() is too slow // to be used here. if ((int)uriKind < (int)UriKind.RelativeOrAbsolute || (int)uriKind > (int)UriKind.Relative) { throw new ArgumentException(SR.GetString(SR.net_uri_InvalidUriKind, uriKind)); } m_String = uri == null? string.Empty: uri; if (dontEscape) m_Flags |= Flags.UserEscaped; ParsingError err = ParseScheme(m_String, ref m_Flags, ref m_Syntax); UriFormatException e; InitializeUri(err, uriKind, out e); if (e != null) throw e; }