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