public PerformanceMonitor(PerformanceMonitorConfiguration configuration, ISession session, ILog log = null, bool?forceEnabledState = null) { _configuration = configuration; ContinueOnError = true; _monitorLog = log ?? _configuration.GetLogger(); _genericLog = LogManager.GetLogger(_typeOfThis); if (_configuration != null && forceEnabledState.HasValue) { _configuration.Enabled = forceEnabledState.Value; } try { if (_configuration?.Enabled == true) { if (configuration.ControllerAction.Enabled) { ControllerActionMonitor = new ActionMonitor(_configuration.ControllerAction, session); } if (configuration.DataConfiguration.Enabled) { if (configuration.DataConfiguration.ClientData.Enabled) { RequestMonitor = new DataMonitor("Request Data", configuration.DataConfiguration.ClientData, session); } if (configuration.DataConfiguration.Model2DTO.Enabled) { ResponseMonitorPreAction = new DataMonitor("Response Data Pre Action", _configuration.DataConfiguration.Model2DTO, session); ResponseMonitorPostAction = new DataMonitor("Response Data Post Action", _configuration.DataConfiguration.Model2DTO, session); } if (configuration.DataConfiguration.DTO2ViewModel.Enabled) { ConversionMonitor = new DataMonitor("DTO to ViewModel Conversion", _configuration.DataConfiguration.DTO2ViewModel, session); } } if (configuration.DBFlush.Enabled) { DatabaseFlushMonitor = new DataMonitor("Database Flush Monitor", configuration.DBFlush, session); } } } catch (Exception e) { _genericLog.Error($"{_nameOfThis} - Failed to initialize {_nameOfThis}: {e.Message}"); _genericLog.Debug($"{_nameOfThis} - Failed to initialize {_nameOfThis}: {e.StackTrace}"); if (!ContinueOnError) { throw; } } }
public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); var action = (string)context.RouteData.Values["Action"]; var controller = (string)context.RouteData.Values["Controller"]; context.HttpContext.SetApiRequestConfig(LogEnabled, AllowPartialResponse, controller, action); // var manager = ServiceLocator.Current.GetInstance<IMiniSessionService>(); var manager = context.HttpContext.RequestServices.GetRequiredService <IMiniSessionService>(); if (ReadOnly) { manager.OpenSession(); } else { manager.OpenSessionWithTransaction(); } ExposedAPIMonitor = new ActionMonitor(ExposedAPIMonitorConfiguration, manager.Session, null); ExposedAPIMonitor?.Start(); }