private void ModifyItem(ITelemetry item) { var requestTelemetryItem = item as RequestTelemetry; if (requestTelemetryItem != null && requestTelemetryItem.Url != null) { var route = GetCurrentRoute(); if (route == null) { return; } requestTelemetryItem.Url = RouteExtensions.ObfuscateUrlQuery(requestTelemetryItem.Url, RouteExtensions.ObfuscatedReturnUrlMetadata); // Removes the first / var requestPath = requestTelemetryItem.Url.AbsolutePath.TrimStart('/'); var obfuscatedPath = route.ObfuscateUrlPath(requestPath); if (obfuscatedPath != null) { requestTelemetryItem.Url = new Uri(requestTelemetryItem.Url.ToString().Replace(requestPath, obfuscatedPath)); requestTelemetryItem.Name = requestTelemetryItem.Name.Replace(requestPath, obfuscatedPath); if (requestTelemetryItem.Context.Operation?.Name != null) { requestTelemetryItem.Context.Operation.Name = requestTelemetryItem.Context.Operation.Name.Replace(requestPath, obfuscatedPath); } } } }
private void ModifyRequestItem(RequestTelemetry requestTelemetryItem) { // In some cases, Application Insights reports an intermediate request as a workaround // when AI lost correlation context and has to restore it. // Hence, RequestTelemetry.Url may be null. // See https://github.com/microsoft/ApplicationInsights-dotnet-server/pull/898 // and https://docs.microsoft.com/en-us/dotnet/api/microsoft.applicationinsights.datacontracts.requesttelemetry.url if (requestTelemetryItem.Url == null) { return; } var route = GetCurrentRoute(); if (route == null) { return; } requestTelemetryItem.Url = RouteExtensions.ObfuscateUrlQuery(requestTelemetryItem.Url, RouteExtensions.ObfuscatedReturnUrlMetadata); // Removes the first / var requestPath = requestTelemetryItem.Url.AbsolutePath.TrimStart('/'); var obfuscatedPath = route.ObfuscateUrlPath(requestPath); if (obfuscatedPath != null) { requestTelemetryItem.Url = new Uri(requestTelemetryItem.Url.ToString().Replace(requestPath, obfuscatedPath)); requestTelemetryItem.Name = requestTelemetryItem.Name.Replace(requestPath, obfuscatedPath); if (requestTelemetryItem.Context.Operation?.Name != null) { requestTelemetryItem.Context.Operation.Name = requestTelemetryItem.Context.Operation.Name.Replace(requestPath, obfuscatedPath); } } }