I have an ASP.NET Website. I am using the following code in Global.Asax.cs
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            Context.Response.SetServerTiming(
    new ServerTimingMetric("cache", 300, "Cache"),
    new ServerTimingMetric("sql", 900, "Sql Server"),
    new ServerTimingMetric("fs", 600, "FileSystem"),
    new ServerTimingMetric("cpu", 1230, "Total CPU")
);
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for HttpResponseHeadersExtensions
/// </summary>
public static class HttpResponseHeadersExtensions
{
    public static void SetServerTiming(this HttpResponse response, params ServerTimingMetric[] metrics)
    {
        ServerTimingHeaderValue serverTiming = new ServerTimingHeaderValue();
        foreach (ServerTimingMetric metric in metrics)
        {
            serverTiming.Metrics.Add(metric);
            response.Headers.Add("Server-Timing", serverTiming.ToString());
        }
        //response.Headers.Append("Server-Timing", serverTiming.ToString());
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for IServerTiming
/// </summary>
public interface IServerTiming
{
    ICollection<ServerTimingMetric> Metrics { get; }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
internal class ServerTiming : IServerTiming
{
    public ICollection<ServerTimingMetric> Metrics { get; }
    public ServerTiming()
    {
        Metrics = new List<ServerTimingMetric>();
    }
}
using System;
using System.Collections.Generic;
public class ServerTimingHeaderValue
{
    public ICollection<ServerTimingMetric> Metrics { get; }
    public ServerTimingHeaderValue()
    {
        Metrics = new List<ServerTimingMetric>();
    }
    public override string ToString()
    {
        return String.Join(",", Metrics);
    }
}
using System.Globalization;
using System;
public struct ServerTimingMetric
{
    private string _serverTimingMetric;
    public string Name { get; }
    public decimal? Value { get; }
    public string Description { get; }
    public ServerTimingMetric(string name, decimal? value, string description)
    {
        if (String.IsNullOrEmpty(name))
            throw new ArgumentNullException(nameof(name));
        Name = name;
        Value = value;
        Description = description;
        _serverTimingMetric = null;
    }
    public override string ToString()
    {
        if (_serverTimingMetric == null)
        {
            _serverTimingMetric = Name;
            if (Value.HasValue)
                _serverTimingMetric = _serverTimingMetric + "=" + Value.Value.ToString(CultureInfo.InvariantCulture);
            if (!String.IsNullOrEmpty(Description))
                _serverTimingMetric = _serverTimingMetric + ";\"" + Description + "\"";
        }
        return _serverTimingMetric;
    }
}
I am getting the following output,

Has anyone configured the Server Timing API for the old ASP.NET Website?
 
    
