Пример #1
0
        internal static void InterceptControllerWithProfilerOnActionExecuting(ActionExecutingContext context, TimeMeasureOptions options, TimeMeasureProfiler profiler)
        {
            profiler.Timer.Start();
            var descriptor = context.ActionDescriptor as ControllerActionDescriptor;

            if (descriptor != null)
            {
                var expectedObjects = context.ParseRuntimeParameters(descriptor);
                var verifiedObjects = context.ActionArguments.Values.ToArray();
                if (verifiedObjects.Length == expectedObjects.Length)
                {
                    expectedObjects = verifiedObjects;
                }
                var md = options.MethodDescriptor?.Invoke() ?? context.ParseMethodDescriptor(descriptor);
                profiler.Member = md.ToString();
                profiler.Data   = md.MergeParameters(options.RuntimeParameters ?? expectedObjects);
            }
        }