File: Internal\HttpMetricsTagsFeature.cs
Web Access
Project: src\src\Hosting\Hosting\src\Microsoft.AspNetCore.Hosting.csproj (Microsoft.AspNetCore.Hosting)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Http.Features;
 
namespace Microsoft.AspNetCore.Hosting;
 
internal sealed class HttpMetricsTagsFeature : IHttpMetricsTagsFeature
{
    ICollection<KeyValuePair<string, object?>> IHttpMetricsTagsFeature.Tags => TagsList;
    public bool MetricsDisabled { get; set; }
 
    public List<KeyValuePair<string, object?>> TagsList { get; } = new List<KeyValuePair<string, object?>>();
 
    // Cache request values when request starts. These are used when writing metrics when the request ends.
    // This ensures that the tags match between the start and end of the request. Important for up/down counters.
    public string? Method { get; set; }
    public string? Scheme { get; set; }
    public string? Protocol { get; set; }
 
    public void Reset()
    {
        TagsList.Clear();
        MetricsDisabled = false;
 
        Method = null;
        Scheme = null;
        Protocol = null;
    }
}