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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }