public override async Task Invoke(AspectContext context, AspectDelegate next)
        {
            try
            {
                var watch = Stopwatch.StartNew();
                await next(context);

                watch.Stop();
                var elapsedMs = watch.ElapsedMilliseconds;

                var name = $"{context.ImplementationMethod.DeclaringType.Name}.{context.ImplementationMethod.Name}";

                Task.Run(() =>
                {
                    var httpContextAccessor = EngineContext.Current.Resolve <IHttpContextAccessor>();
                    var requestId           = httpContextAccessor?.HttpContext?.TraceIdentifier;
                    using (var client = DbFactory.GetClient())
                    {
                        var servicePerformance           = new ServicePerformanceMonitor();
                        servicePerformance.Name          = name;
                        servicePerformance.ElapsedMs     = (int)elapsedMs;
                        servicePerformance.HttpRequestId = requestId;
                        servicePerformance.AddTime       = DateTime.Now;
                        servicePerformance.Id            = client.Insertable(servicePerformance).ExecuteReturnBigIdentity();
                    }
                });
            }
            catch (MozException zoException)
            {
            }
            catch (Exception ex)
            {
            }
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CreateServicePerformanceResponse CreateServicePerformance(CreateServicePerformanceRequest request)
        {
            using (var client = DbFactory.GetClient())
            {
                var servicePerformance = new ServicePerformanceMonitor();
                servicePerformance.Name          = request.Name;
                servicePerformance.ElapsedMs     = request.ElapsedMs;
                servicePerformance.HttpRequestId = request.HttpRequestId;
                servicePerformance.AddTime       = request.AddTime;
                servicePerformance.Id            = client.Insertable(servicePerformance).ExecuteReturnBigIdentity();

                //_cacheManager.RemoveOnEntityCreated<ServicePerformance>();
                _eventPublisher.EntityCreated(servicePerformance);

                return(new CreateServicePerformanceResponse());
            }
        }
Пример #3
0
        public void OnActionExecuted(ActionExecutedContext context)
        {
            _stopwatch.Stop();
            var elapsedMs = _stopwatch.ElapsedMilliseconds;
            var name      = context.ActionDescriptor.DisplayName;

            Task.Run(() =>
            {
                var httpContextAccessor = EngineContext.Current.Resolve <IHttpContextAccessor>();
                var requestId           = httpContextAccessor?.HttpContext?.TraceIdentifier;
                using (var client = DbFactory.CreateClient())
                {
                    var servicePerformance = new ServicePerformanceMonitor
                    {
                        Name          = name,
                        ElapsedMs     = (int)elapsedMs,
                        HttpRequestId = requestId,
                        AddTime       = DateTime.Now
                    };
                    servicePerformance.Id = client.Insertable(servicePerformance).ExecuteReturnBigIdentity();
                }
            });
        }