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(); }
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); }
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(); }
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(); }
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); }