protected void Application_Error(object sender, EventArgs e)
        {
            Exception ex = HttpContext.Current.Server.GetLastError();
            LogManager.getInstance().WriteException("SysLog", ex);
            DataResult result = new DataResult() { Code = ResponseStatusCode.Error, Msg = ex.Message };

            JavaScriptSerializer js = new JavaScriptSerializer();
            string json = js.Serialize(result);

            Server.ClearError();
            Response.Clear();
            Response.ContentType = "application/json; charset=utf-8";
            Response.Headers.Add("Access-Control-Allow-Origin", "*");
            Response.Write(json);

            //HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.BadRequest);
            //response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

            //Response.Write(response);
        }
        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);
        }
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            var exception = actionExecutedContext.Exception;
            HttpResponseMessage httpResponseMessage;
            var dataResult = new DataResult();
            LogManager.getInstance().WriteException("SysLog", exception);

            string errors = String.Format("日期:{0}\r\n{1}\r\n", DateTime.Now.ToString(), exception.Message + ":" + exception.Source + ":" + exception.StackTrace);
            //AliyunQueue queue = new AliyunQueue();
            //queue.Push(errors);

            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 AuthorizeException)
            {
                dataResult.Code = ResponseStatusCode.Error_Unauthorized;
                dataResult.Msg = exception.Message;
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult);
            }
            else if (exception is DataOperationPermissions)
            {
                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 ArgumentException)
            {
                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
            {
                dataResult.Code = ResponseStatusCode.Error;
                dataResult.Msg = "系统异常,请联系管理员";
                httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult);
            }
            actionExecutedContext.Response = httpResponseMessage;
            base.OnException(actionExecutedContext);
        }