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); }