Picture: Microsoft

Loggen des Referers mit Azure Application Insights

Standardmäßig wird der Referer, also die Quelle des Aurufs des HTTP-Requests, nicht von der Application Insights Middleware des ASP.NET SDKs gespeichert. Um dies dennoch im Log zu hinterlegen, muss ein eigener ITelemetryInitializer geschrieben werden.

    public class HttpRefererTelemetryInitializer : ITelemetryInitializer
    {
        private readonly IHttpContextAccessor _httpContextAccessor;

        public HttpRefererTelemetryInitializer(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public void Initialize(ITelemetry telemetry)
        {
            if (telemetry is RequestTelemetry requestTelemetry)
            {
                requestTelemetry.Context.GlobalProperties.Add("Url-Referer",
                    _httpContextAccessor.HttpContext.Request.Headers["Referer"]);
            }
        }
    }

Dieser muss anschließend noch registriert werden

services.AddSingleton<ITelemetryInitializer, HttpRefererTelemetryInitializer>();

What is Application Insights?