Class ServerTimingMiddleware
- Namespace
- Cuemon.AspNetCore.Diagnostics
- Assembly
- Cuemon.AspNetCore.dll
Provides a Server-Timing middleware implementation for ASP.NET Core.
public class ServerTimingMiddleware : Middleware<ILogger<ServerTimingMiddleware>, IHostEnvironment, IServerTiming, IOptions<ServerTimingOptions>>
- Inheritance
-
Middleware<ILogger<ServerTimingMiddleware>, IHostEnvironment, IServerTiming, IOptions<ServerTimingOptions>>ServerTimingMiddleware
- Inherited Members
Examples
The following example demonstrates how to register and use ServerTimingMiddleware to emit Server-Timing performance metrics in the response header.
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace Cuemon.AspNetCore.Diagnostics;
public static class ServerTimingMiddlewareExample
{
public static async Task DemonstrateAsync()
{
var context = new DefaultHttpContext();
var middleware = new ServerTimingMiddleware(httpContext => httpContext.Response.WriteAsync("Hello"));
using var loggerFactory = LoggerFactory.Create(builder => { });
var serverTiming = new ServerTiming();
serverTiming.AddServerTiming("db", TimeSpan.FromMilliseconds(12), "SQL query");
await middleware.InvokeAsync(
context,
loggerFactory.CreateLogger<ServerTimingMiddleware>(),
new SampleHostEnvironment(),
serverTiming,
Options.Create(new ServerTimingOptions { SuppressHeaderPredicate = _ => false }));
Console.WriteLine(context.Response.Headers[ServerTiming.HeaderName].ToString());
}
private sealed class SampleHostEnvironment : IHostEnvironment
{
public string ApplicationName { get; set; } = "Docs";
public IFileProvider ContentRootFileProvider { get; set; } = new NullFileProvider();
public string ContentRootPath { get; set; } = ".";
public string EnvironmentName { get; set; } = Environments.Development;
}
}
Constructors
ServerTimingMiddleware(RequestDelegate)
Initializes a new instance of the ServerTimingMiddleware class.
public ServerTimingMiddleware(RequestDelegate next)
Parameters
nextRequestDelegateThe delegate of the request pipeline to invoke.
Methods
InvokeAsync(HttpContext, ILogger<ServerTimingMiddleware>, IHostEnvironment, IServerTiming, IOptions<ServerTimingOptions>)
Executes the ServerTimingMiddleware.
public override Task InvokeAsync(HttpContext context, ILogger<ServerTimingMiddleware> di1, IHostEnvironment di2, IServerTiming di3, IOptions<ServerTimingOptions> di4)
Parameters
contextHttpContextThe context of the current request.
di1ILogger<ServerTimingMiddleware>The ILogger used in combination with LogLevelSelector.
di2IHostEnvironmentThe dependency injected IHostEnvironment of InvokeAsync(HttpContext, ILogger<ServerTimingMiddleware>, IHostEnvironment, IServerTiming, IOptions<ServerTimingOptions>).
di3IServerTimingThe dependency injected IServerTiming of InvokeAsync(HttpContext, ILogger<ServerTimingMiddleware>, IHostEnvironment, IServerTiming, IOptions<ServerTimingOptions>).
di4IOptions<ServerTimingOptions>The dependency injected IOptions<TOptions> of InvokeAsync(HttpContext, ILogger<ServerTimingMiddleware>, IHostEnvironment, IServerTiming, IOptions<ServerTimingOptions>).
Returns
- Task
A task that represents the execution of this middleware.