コード例 #1
0
        public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
        {
            // Verify if AppMetrics was configured
            AppMetricsServicesHelper.ThrowIfMetricsNotRegistered(context.HttpContext.RequestServices);

            EnsureServices(context.HttpContext);

            var templateRoute = await _routeNameResolver.ResolveMatchingTemplateRouteAsync(context.RouteData);

            if (!string.IsNullOrEmpty(templateRoute))
            {
                context.HttpContext.AddMetricsCurrentRouteName(templateRoute);
            }
            else
            {
                templateRoute = context.ActionDescriptor?.AttributeRouteInfo?.Template;

                if (!string.IsNullOrEmpty(templateRoute))
                {
                    context.HttpContext.AddMetricsCurrentRouteName(templateRoute.ToLowerInvariant());
                }
                else
                {
                    templateRoute = $"{context.HttpContext.Request.Method} {context.HttpContext.Request.Path}";

                    context.HttpContext.AddMetricsCurrentRouteName(templateRoute.ToLowerInvariant());
                }
            }

            await next.Invoke();
        }
コード例 #2
0
        private static void EnsureMetricsAdded(IApplicationBuilder app)
        {
            if (app == null)
            {
                throw new ArgumentNullException(nameof(app));
            }

            // Verify if AddMetrics was done before calling using middleware.
            // We use the MetricsMarkerService to make sure if all the services were added.
            AppMetricsServicesHelper.ThrowIfMetricsNotRegistered(app.ApplicationServices);
        }
コード例 #3
0
        public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
        {
            // Verify if AppMetrics was configured
            AppMetricsServicesHelper.ThrowIfMetricsNotRegistered(context.HttpContext.RequestServices);

            EnsureServices(context.HttpContext);

            var templateRoute = await _routeNameResolver.ResolveMatchingTemplateRouteAsync(context.RouteData);

            if (!string.IsNullOrEmpty(templateRoute))
            {
                context.HttpContext.AddMetricsCurrentRouteName(templateRoute);
            }
            else
            {
                templateRoute = context.ActionDescriptor?.AttributeRouteInfo?.Template;

                if (!string.IsNullOrEmpty(templateRoute))
                {
                    if (!string.IsNullOrEmpty(templateRoute) && templateRoute.Contains(DefaultVersionRouteKey))
                    {
                        if (context.RouteData.Values.ContainsKey(VersionRouteKey))
                        {
                            templateRoute = templateRoute.Replace(DefaultVersionRouteKey, context.RouteData.Values.Single(x => x.Key == VersionRouteKey).Value.ToString());
                        }

                        context.HttpContext.AddMetricsCurrentRouteName(templateRoute.ToLowerInvariant());
                    }

                    context.HttpContext.AddMetricsCurrentRouteName(templateRoute.ToLowerInvariant());
                }
                else
                {
                    if (context.RouteData == null || !context.RouteData.Values.Any())
                    {
                        templateRoute = $"{context.HttpContext.Request.Method} {context.HttpContext.Request.Path}";
                    }
                    else
                    {
                        var controller = context.RouteData.Values.FirstOrDefault(v => v.Key == ControllerRouteKey);
                        var action     = context.RouteData.Values.FirstOrDefault(v => v.Key == ActionRouteKey);
                        var version    = context.RouteData.Values.FirstOrDefault(v => v.Key == VersionRouteKey);

                        templateRoute = (version.Value == null ? string.Empty : $"VER-{version.Value} ") + $"{controller.Value}/{action.Value}";
                    }

                    context.HttpContext.AddMetricsCurrentRouteName(templateRoute.ToLowerInvariant());
                }
            }

            await next.Invoke();
        }
コード例 #4
0
        public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
        {
            // Verify if AppMetrics was configured
            AppMetricsServicesHelper.ThrowIfMetricsNotRegistered(context.HttpContext.RequestServices);

            EnsureServices(context.HttpContext);

            var templateRoute = await _routeNameResolver.ResolveMatchingTemplateRouteAsync(context.RouteData);

            if (!string.IsNullOrEmpty(templateRoute))
            {
                context.HttpContext.AddMetricsCurrentRouteName(templateRoute);
            }

            await next.Invoke();
        }
コード例 #5
0
 private static void EnsureRequiredServices(IApplicationBuilder app)
 {
     // Verify if AddMetrics was done before calling UseMetricsAllMiddleware
     // We use the MetricsMarkerService to make sure if all the services were added.
     AppMetricsServicesHelper.ThrowIfMetricsNotRegistered(app.ApplicationServices);
 }