/// <exclude />
        public static void Application_EndRequest(object sender, EventArgs e)
        {
            var context = ((HttpApplication)sender).Context;

            try
            {
                ServiceLocator.DisposeRequestServicesScope(context);

                if (LogRequestDetails && context.Items.Contains("Global.asax timer"))
                {
                    int    startTimer  = (int)context.Items["Global.asax timer"];
                    string requestPath = context.Request.Path;
                    Log.LogVerbose("End request", $"{requestPath} - took {Environment.TickCount - startTimer} ms");
                }
            }
            finally
            {
                ThreadDataManager.FinalizeThroughHttpContext();
            }
        }