private static string CreateCorrelationContextHeader()

in src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs [137:232]


        private static string CreateCorrelationContextHeader(RequestType requestType, RequestTracingOptions requestTracingOptions)
        {
            IList<KeyValuePair<string, string>> correlationContextKeyValues = new List<KeyValuePair<string, string>>();
            IList<string> correlationContextTags = new List<string>();

            correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.RequestTypeKey, Enum.GetName(typeof(RequestType), requestType)));

            if (requestTracingOptions.ReplicaCount > 0)
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.ReplicaCountKey, requestTracingOptions.ReplicaCount.ToString()));
            }

            if (requestTracingOptions.HostType != HostType.Unidentified)
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.HostTypeKey, Enum.GetName(typeof(HostType), requestTracingOptions.HostType)));
            }

            if (requestTracingOptions.IsDevEnvironment)
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.EnvironmentKey, RequestTracingConstants.DevEnvironmentValue));
            }

            if (requestTracingOptions.FeatureFlagTracing.UsesAnyFeatureFilter())
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.FeatureFlagFilterTypeKey, requestTracingOptions.FeatureFlagTracing.CreateFiltersString()));
            }

            if (requestTracingOptions.FeatureFlagTracing.MaxVariants > 0)
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.FeatureFlagMaxVariantsKey, requestTracingOptions.FeatureFlagTracing.MaxVariants.ToString()));
            }

            if (requestTracingOptions.FeatureFlagTracing.UsesAnyTracingFeature())
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.FeatureFlagFeaturesKey, requestTracingOptions.FeatureFlagTracing.CreateFeaturesString()));
            }

            if (requestTracingOptions.FeatureManagementVersion != null)
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.FeatureManagementVersionKey, requestTracingOptions.FeatureManagementVersion));
            }

            if (requestTracingOptions.FeatureManagementAspNetCoreVersion != null)
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.FeatureManagementAspNetCoreVersionKey, requestTracingOptions.FeatureManagementAspNetCoreVersion));
            }

            if (requestTracingOptions.UsesAnyTracingFeature())
            {
                correlationContextKeyValues.Add(new KeyValuePair<string, string>(RequestTracingConstants.FeaturesKey, requestTracingOptions.CreateFeaturesString()));
            }

            if (requestTracingOptions.IsKeyVaultConfigured)
            {
                correlationContextTags.Add(RequestTracingConstants.KeyVaultConfiguredTag);
            }

            if (requestTracingOptions.IsKeyVaultRefreshConfigured)
            {
                correlationContextTags.Add(RequestTracingConstants.KeyVaultRefreshConfiguredTag);
            }

            if (requestTracingOptions.IsFailoverRequest)
            {
                correlationContextTags.Add(RequestTracingConstants.FailoverRequestTag);
            }

            if (requestTracingOptions.IsPushRefreshUsed)
            {
                correlationContextTags.Add(RequestTracingConstants.PushRefreshTag);
            }

            var sb = new StringBuilder();

            foreach (KeyValuePair<string, string> kvp in correlationContextKeyValues)
            {
                if (sb.Length > 0)
                {
                    sb.Append(",");
                }

                sb.Append($"{kvp.Key}={kvp.Value}");
            }

            foreach (string tag in correlationContextTags)
            {
                if (sb.Length > 0)
                {
                    sb.Append(",");
                }

                sb.Append($"{tag}");
            }

            return sb.ToString();
        }