/// <summary> /// /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { try { _task = (ScheduledTask)context.MergedJobDataMap["ScheduledTask"]; DateTime planingTime = context.ScheduledFireTimeUtc.HasValue ? context.ScheduledFireTimeUtc.Value.LocalDateTime : DateTime.Now; planingTime = new DateTime(planingTime.Ticks - (planingTime.Ticks % TimeSpan.TicksPerMinute), planingTime.Kind); if (_task.OnlyWorkingDays) { if (HolidayCalculator.Instance.IsHoliday(planingTime, _task.RunAtHalfPublicHoliday)) { return; } } _action = Toolkit.Instance.CreateInstance <IPxTaskAction>(_task.Action); using (PeakDbContext dbContext = new PeakDbContext()) { if (dbContext.ScheduledTaskLogs.FirstOrDefault(x => x.ScheduledTaskId == _task.Id && x.ScheduledTime == planingTime) != null) { return; } ScheduledTaskLog taskLog = new ScheduledTaskLog() { ScheduledTaskId = _task.Id, State = Dal.Enums.ScheduleState.Running, ScheduledTime = planingTime, StartTime = DateTime.Now }; dbContext.ScheduledTaskLogs.Add(taskLog); dbContext.SaveChanges(); bool succeed = executeAction(planingTime, 0); taskLog.EndTime = DateTime.Now; if (succeed) { taskLog.State = Dal.Enums.ScheduleState.Succeed; } else { taskLog.State = Dal.Enums.ScheduleState.Failed; if (_lastError != null) { taskLog.ErrorMessage = _lastError.Message; taskLog.ErrorDetail = _lastError.ToString(); _lastError = null; } } dbContext.SaveChanges(); } } catch (Exception ex) { PxErrorLogger.Log(ex); } }
private void logResponse(ActionExecutedContext context) { try { if (PxConfigurationManager.PxConfig.Logging.ActionLogEnabled) { PxActionLogAttribute logAttribute = (context.ActionDescriptor as ControllerActionDescriptor).MethodInfo.GetCustomAttributes(false).OfType <PxActionLogAttribute>().FirstOrDefault(); if (logAttribute != null && logAttribute.LogSetting == ActionLogSetting.NoLog) { return; } PxLogResponseInfo info = new PxLogResponseInfo(); if (context.HttpContext.Response.Headers != null && context.HttpContext.Response.Headers.Count > 0) { info.Header = Newtonsoft.Json.JsonConvert.SerializeObject(context.HttpContext.Response.Headers); } info.RequestId = context.HttpContext.TraceIdentifier; info.ResponseCode = context.HttpContext.Response.StatusCode.ToString(); if (logAttribute != null && (logAttribute.LogSetting == ActionLogSetting.TraceWithAllData || logAttribute.LogSetting == ActionLogSetting.TraceWithResponseData)) { if (context.Result is RedirectResult) { RedirectResult redirectResult = context.Result as RedirectResult; info.Message = JsonConvert.SerializeObject(new { RedirectUrl = redirectResult.Url }); } else if (context.Result is RedirectToActionResult) { RedirectToActionResult redirectToActionResult = context.Result as RedirectToActionResult; info.Message = JsonConvert.SerializeObject(new { ControllerName = redirectToActionResult.ControllerName, ActionName = redirectToActionResult.ActionName, RouteValues = redirectToActionResult.RouteValues }); } else if (context.Result is RedirectToRouteResult) { RedirectToRouteResult redirectToRouteResult = context.Result as RedirectToRouteResult; info.Message = JsonConvert.SerializeObject(redirectToRouteResult.RouteValues); } else if (!(context.Result is FileResult)) { info.Message = JsonConvert.SerializeObject(context.Result); } } info.UserId = PxSession.Current.Principal.UserId; info.SessionKey = PxSession.Current.Principal.Authentication.Token; PxActionResponseLogger.Log(info); } } catch (Exception ex) { PxErrorLogger.Log(ex); } }
public override void OnException(ExceptionContext context) { if (context.Exception == null) { return; } string errorCode = PxErrorLogger.Log(context.Exception, context.HttpContext.TraceIdentifier); if (context.ExceptionHandled) { return; } PxException axException = context.Exception as PxException; if (context.HttpContext.Request.IsAjaxRequest()) { PxAjaxResult result = new PxAjaxResult() { IsError = true }; if (axException != null) { result.IsFatalError = (axException.Priority == Common.Enums.ErrorPriority.High); result.ErrorCode = axException.ErrorCode; //result.ErrorMessage = axException.Message; } else { result.IsFatalError = true; result.ErrorCode = errorCode; //result.ErrorMessage = context.Exception.Message; } context.Result = new JsonResult(result); } else { context.Result = new RedirectToRouteResult( new RouteValueDictionary( new { controller = "Error", action = "Index", errorCode = (axException != null ? axException.ErrorCode : errorCode) }) ); } context.ExceptionHandled = true; }
private void logRequest(ActionExecutingContext context) { try { if (PxConfigurationManager.PxConfig.Logging.ActionLogEnabled) { PxActionLogAttribute logAttribute = (context.ActionDescriptor as ControllerActionDescriptor).MethodInfo.GetCustomAttributes(false).OfType <PxActionLogAttribute>().FirstOrDefault(); if (logAttribute != null && logAttribute.LogSetting == ActionLogSetting.NoLog) { return; } PxLogRequestInfo info = new PxLogRequestInfo(); info.RequestId = context.HttpContext.TraceIdentifier; if (context.HttpContext.Request.Headers != null && context.HttpContext.Request.Headers.Count > 0) { info.Header = Newtonsoft.Json.JsonConvert.SerializeObject(context.HttpContext.Request.Headers); } if (logAttribute == null || logAttribute.LogSetting == ActionLogSetting.TraceWithAllData || logAttribute.LogSetting == ActionLogSetting.TraceWithRequestData) { if (context.ActionArguments != null && context.ActionArguments.Count > 0) { info.Message = JsonConvert.SerializeObject(context.ActionArguments); } } info.Ip = PxSession.Current.Client.IPAddress; info.MethodType = context.HttpContext.Request.Method; info.RequestType = context.HttpContext.Request.IsAjaxRequest() ? Common.Enums.RequestType.XHttp : Common.Enums.RequestType.Http; info.Url = context.HttpContext.Request.Path.HasValue ? context.HttpContext.Request.Path.Value : null; info.UserId = PxSession.Current.Principal.UserId; info.SessionKey = PxSession.Current.Principal.Authentication.Token; PxActionRequestLogger.Log(info); } } catch (Exception ex) { PxErrorLogger.Log(ex); } }