Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
 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);
     }
 }