コード例 #1
0
 public void ConfigureRequestProcTime(IAppBuilder app)
 {
     RequestProcTimeOption requestProcTimeOption = new RequestProcTimeOption();
     requestProcTimeOption.RequestProcTimeAction = (data) =>
     {
         var messageInfo = new MessageInfo();
         messageInfo.Message = "请求时间日志";
         messageInfo.Body = data;
         messageInfo.Action = (messageData) =>
         {
             var bodyData = messageData.Body as RequestProcData;
             if (bodyData == null) return;
             //var requestProcTimeLog = new RequestProcTimeLog
             //{
             //    BeginRequestDateTime = bodyData.BeginRequestDateTime,
             //    EndRequestDateTime = bodyData.EndRequestDateTime,
             //    RequestIp = bodyData.RequestIp,
             //    RequestResponseInterval = bodyData.RequestResponseInterval,
             //    RequestUrl = bodyData.RequestUrl
             //};
             var requestProcTimeLog = Mapper.MapNew<RequestProcData, RequestProcTimeLog>(bodyData);
             var mongoDbRepository = new MongoDBRepository<RequestProcTimeLog>();
             mongoDbRepository.Insert(requestProcTimeLog);
         };
         QueueManagement.getInstance().PushData(messageInfo);
     };
     app.UseRequestProcTime(requestProcTimeOption);
 }
コード例 #2
0
        public void ConfigureRequestLog(IAppBuilder app)
        {
            var requestLogOption = new RequestLogOption();
            requestLogOption.RequestLogProceAction = (data) =>
            {
                var messageInfo = new MessageInfo();
                messageInfo.Message = "请求日志";
                messageInfo.Body = data;
                messageInfo.Action = (messageData) =>
                {
                    var bodyData = messageData.Body as RequestLogData;
                    if (bodyData == null) return;
                    var requestDataLog = Mapper.MapNew<RequestLogData, RequestDataLog>(bodyData);
                    var mongoDbRepository = new MongoDBRepository<RequestDataLog>();
                    mongoDbRepository.Insert(requestDataLog);

                };
                QueueManagement.getInstance().PushData(messageInfo);
                LogManager.getInstance().WriteRequestLog(messageInfo.Message);
            };

            app.UseRequestLog(requestLogOption);
        }
コード例 #3
0
        /// <summary>
        /// 放入数据
        /// </summary>
        /// <param name="msg"></param>
        public void Push(MessageInfo msg)
        {
            try
            {
                var sendMessageRequest = new SendMessageRequest(ObjectToByteArrayToString(msg));
                var sendMessageResponse = _queue.SendMessage(sendMessageRequest);
            }
            catch (Exception exception)
            {

            }
        }
コード例 #4
0
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            var exception = actionExecutedContext.Exception;
            HttpResponseMessage httpResponseMessage;
            var dataResult = new DataResult();
            LogManager.getInstance().WriteException("SysLog", exception);
            bool isEMail = false;

            #region 异常处理
            if (exception is BusinessException)
            {
                dataResult.Code = ResponseStatusCode.Error;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult);
            }
            else if (exception is AccountLoginInOtherPlacesException)
            {
                dataResult.Code = ResponseStatusCode.Error_NeedReLogin;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult);
            }
            else if (exception is UseStatusException)
            {
                dataResult.Code = ResponseStatusCode.Error_UseStatus;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult);
            }
            else if (exception is AuthorizeException)
            {
                isEMail = true;
                dataResult.Code = ResponseStatusCode.Error_Unauthorized;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult);
            }
            else if (exception is DataOperationPermissions)
            {
                isEMail = true;
                dataResult.Code = ResponseStatusCode.Error_Forbidden;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Forbidden, dataResult);
            }
            else if (exception is DataValidationException)
            {
                dataResult.Code = ResponseStatusCode.Error;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult);
            }
            else if (exception is QueryArgumentException)
            {
                dataResult.Code = ResponseStatusCode.Error;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult);
            }
            else if (exception is ArgumentException)
            {
                dataResult.Code = ResponseStatusCode.Error;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult);
            }
            else if (exception is DataConcurrencyException)
            {
                dataResult.Code = ResponseStatusCode.Error_Concurrency;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Conflict, dataResult);
            }
            else
            {
                isEMail = true;
                dataResult.Code = ResponseStatusCode.Error;
                dataResult.Msg = "系统异常,请联系管理员";
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult);
            }
            #endregion

            actionExecutedContext.Response = httpResponseMessage;

            var messageInfo = new MessageInfo();
            messageInfo.Message = "异常信息";
            messageInfo.Body = exception;
            messageInfo.Action = (messageData) =>
            {
                var bodyData = messageData.Body as Exception;
                if (bodyData == null) return;
                var exceptionLog = LogEntityUtils.GetExceptionLog(bodyData);

                var mongoDbRepository = new MongoDBRepository<ExceptionLog>();
                mongoDbRepository.Insert(exceptionLog);

                MailHelper.SendEmail(bodyData);

            };
            QueueManagement.getInstance().PushData(messageInfo);

            base.OnException(actionExecutedContext);
        }
コード例 #5
0
        /// <summary>
        /// 动态加载配置方法
        /// </summary>
        public void Configuration()
        {
            ServcieBeheavior.Func = (input, getNext) =>
            {
                var servcieExecuteLog=new ServcieExecuteLog();
                var dictionary=new Dictionary<string, object>();
                for (var i = 0; i < input.Arguments.Count; i++)
                {
                    dictionary.Add("arg"+(i+1),input.Arguments[i]);
                }

                servcieExecuteLog.ExcecuteArguments = JsonConvert.SerializeObject(dictionary);
                servcieExecuteLog.BeginExecuteDateTime = DateTime.Now;

                var result = getNext().Invoke(input, getNext);

                servcieExecuteLog.EndExecuteDateTime = DateTime.Now;
                servcieExecuteLog.ExecuteInterval = servcieExecuteLog.EndExecuteDateTime -
                                                    servcieExecuteLog.BeginExecuteDateTime;
                if (result.Exception != null)
                {

                }
                var messageInfo = new MessageInfo();
                messageInfo.Message = "服务执行日志";
                messageInfo.Body = servcieExecuteLog;
                messageInfo.Action = (messageData) =>
                {
                    var bodyData = messageData.Body as ServcieExecuteLog;
                    if (bodyData == null) return;
                    var mongoDbRepository = new MongoDBRepository<ServcieExecuteLog>();
                    mongoDbRepository.Insert(bodyData);

                };
                QueueManagement.getInstance().PushData(messageInfo);

                //注:以下处理正式情况不会影响 太大性能
                //   但为了 不占方法执行更多性能 这里采用异步方式
                //Task.Factory.StartNew(data =>
                //{
                //    var messageInfo = new MessageInfo();
                //    messageInfo.Message = "服务执行日志";
                //    messageInfo.Body = data;
                //    messageInfo.Action = (messageData) =>
                //    {
                //        var bodyData = messageData.Body as ServcieExecuteLog;
                //        if (bodyData == null) return;
                //        var mongoDbRepository = new MongoDBRepository<ServcieExecuteLog>();
                //        mongoDbRepository.Insert(bodyData);

                //    };
                //    QueueManagement.getInstance().PushData(messageInfo);
                //}, servcieExecuteLog);

                return result;
            };
            ServiceLocator.Regist(container =>
            {
                container.RegisterType(typeof(IUserService), typeof(UserService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IBranchService), typeof(BranchService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IContractService), typeof(ContractService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IMenuService), typeof(MenuService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(ISpecialService), typeof(SpecialService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IPaymentService), typeof(PaymentService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IInvoiceService), typeof(InvoiceService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IShortMessageService), typeof(ShortMessageService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(ICollectInvoiceService), typeof(CollectInvoiceService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IGatheringService), typeof(GatheringService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(IDebitService), typeof(DebitService), new InterceptionArguments<ServcieBeheavior>());
                container.RegisterType(typeof(InsuranceInterfaceService), typeof(InsuranceService), new InterceptionArguments<ServcieBeheavior>());
            });
        }
コード例 #6
0
 /// <summary>
 /// 向消息队列中push数据
 /// </summary>
 /// <param name="messageInfo"></param>
 public void PushData(MessageInfo messageInfo)
 {
     var aliyunQueue = new AliyunQueue("logQueue");
     aliyunQueue.Push(messageInfo);
 }