Ejemplo n.º 1
0
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult), context.Exception, context.Exception.Message);

            var json = new JsonErrorResponse
            {
                Messages = new[] { "An error occurred." }
            };

            if (env.IsDevelopment())
            {
                json.DeveloperMeesage = context.Exception;
            }

            context.Result = new ObjectResult(json);
            context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            context.ExceptionHandled = true;
        }
Ejemplo n.º 2
0
        public void OnException(ExceptionContext context)
        {
            var source     = context.Exception.Source;
            var message    = $"{TraverseException(context.Exception)} occured in {source}";
            var stackTrace = context.Exception.StackTrace;

            _logger.LogError(new EventId(context.Exception.HResult),
                             context.Exception,
                             "Exception throw in {ServiceName} : {message}", ServiceName, message);

            var jsonErrorResponse = new JsonErrorResponse
            {
                //Messages = new[] {context.Exception.Message}
                Messages   = new[] { message },
                Source     = source,
                StackTrace = stackTrace
            };

            // Fetch the exception
            var exceptionType = context.Exception.GetType();

            if (exceptionType == typeof(UnauthorizedAccessException))
            {
                context.Result = new UnauthorizedResult();
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                context.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = ServiceName;

                //message = "Unauthorized Access";
                //status = HttpStatusCode.Unauthorized;
            }
            else if (exceptionType == typeof(ForbidResult))
            {
                context.Result = new ForbidResult(message);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
                context.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = ServiceName;
            }
            else
            {
                // Returns response, but not picked up caller
                context.Result = new BadRequestObjectResult(jsonErrorResponse);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                context.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = message;
            }
        }
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult),
                            context.Exception,
                            context.Exception.Message);


            TrataErro ObjTrataErros = new TrataErro();

            // Envio da excecao.
            ObjTrataErros.Main(context.Exception);


            if (context.Exception.GetType() == typeof(UsuarioDomainExceptions))
            {
                var problemDetails = new ValidationProblemDetails()
                {
                    Instance = context.HttpContext.Request.Path,
                    Status   = StatusCodes.Status400BadRequest,
                    Detail   = "Please refer to the errors property for additional details."
                };

                problemDetails.Errors.Add("DomainValidations", new string[] { context.Exception.Message.ToString() });

                context.Result = new BadRequestObjectResult(problemDetails);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An error ocurred." }
                };

                if (env.IsDevelopment())
                {
                    json.DeveloperMeesage = context.Exception;
                }

                context.Result = new InternalServerErrorObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            context.ExceptionHandled = true;
        }
Ejemplo n.º 4
0
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult),
                            context.Exception,
                            context.Exception.Message);

            if (context.Exception.GetType() == typeof(DomainException) || context.Exception.GetType().BaseType == typeof(DomainException))
            {
                string errorCode    = "DomainValidations";
                string errorMessage = context.Exception.Message.ToString();
                if (context.Exception.GetType().IsSubclassOf(typeof(Common.Exceptions.ExceptionBase)))
                {
                    errorCode = ((Common.Exceptions.ExceptionBase)context.Exception).Code;
                }

                var problemDetails = new ValidationProblemDetails()
                {
                    Instance = context.HttpContext.Request.Path,
                    Status   = StatusCodes.Status400BadRequest,
                    Detail   = "Please refer to the errors property for additional details."
                };

                problemDetails.Errors.Add(errorCode, new string[] { errorMessage });

                context.Result = new BadRequestObjectResult(problemDetails);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An error ocurred." }
                };

                if (env.IsDevelopment())
                {
                    json.DeveloperMessage = context.Exception;
                }

                context.Result = new InternalServerErrorObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            context.ExceptionHandled = true;
        }
        public async Task <IActionResult> Create([FromBody] JObject jsonObject)
        {
            var requestId = Guid.NewGuid().ToString();

            _logger.LogInformation($"RequestID:{requestId} - Permission_Create called.");

            try
            {
                if (jsonObject == null)
                {
                    _logger.LogError($"RequestID:{requestId} - Permission_Create error: null");
                    var errorResponse = JsonErrorResponse.BadRequest($"Permission_Create error: null", requestId);

                    return(BadRequest(errorResponse));
                }

                var modelObject = JsonConvert.DeserializeObject <PermissionModel>(jsonObject.ToString(), new JsonSerializerSettings
                {
                    MissingMemberHandling = MissingMemberHandling.Ignore,
                    NullValueHandling     = NullValueHandling.Ignore
                });


                //TODO: P2 Refactor into Guard
                if (String.IsNullOrEmpty(modelObject.Name))
                {
                    _logger.LogError($"RequestID:{requestId} - Permission_Create error: invalid name");
                    var errorResponse = JsonErrorResponse.BadRequest($"Permission_Create error: invalid name", requestId);

                    return(BadRequest(errorResponse));
                }

                JObject result = await _permissionService.CreateItemAsync(modelObject, requestId);

                return(new CreatedResult(result.SelectToken("id").ToString(), null));
            }
            catch (Exception ex)
            {
                _logger.LogError($"RequestID:{requestId} Permission_Create error: {ex.Message}");
                var errorResponse = JsonErrorResponse.BadRequest($"Permission_Create error: {ex} ", requestId);

                return(BadRequest(errorResponse));
            }
        }
Ejemplo n.º 6
0
        public void OnException(ExceptionContext context)
        {
            if (context.Exception.GetType() == typeof(TopicDomainNotFoundException))
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { context.Exception.Message }
                };

                context.Result = new NotFoundObjectResult(json);
                context.HttpContext.Response.StatusCode = StatusCodes.Status404NotFound;
            }
            else if (context.Exception is TopicDomainInvalidOperationException)
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An unexpected error occurred. Try it again." }
                };

                if (_env.IsDevelopment())
                {
                    json.DeveloperMessage = context.Exception.ToString();
                }

                context.Result = new BadRequestObjectResult(json);
                context.HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An unexpected error occurred. Try it again." }
                };

                if (_env.IsDevelopment())
                {
                    json.DeveloperMessage = context.Exception.ToString();
                }

                context.Result = new InternalServerErrorResult(json);
                context.HttpContext.Response.StatusCode = StatusCodes.Status500InternalServerError;
            }
            context.ExceptionHandled = true;
        }
Ejemplo n.º 7
0
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult),
                            context.Exception,
                            context.Exception.Message);

            if (context.Exception.GetType() == typeof(SampleDomainException))
            {
                var json = new JsonErrorResponse
                {
                    Messages = context.Exception.Message
                };

                // Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
                //It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
                context.Result = new BadRequestObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = "An error occured!"
                };

                if (env.IsDevelopment())
                {
                    //json.DeveloperMessage = context.Exception;
                    json.StackTrace = new
                    {
                        Message = context.Exception.Message,
                        Trace   = context.Exception.StackTrace.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
                    };
                }


                // Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
                // It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
                context.Result = new InternalServerErrorObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            context.ExceptionHandled = true;
        }
        public async Task <ActionResult <NodeDto> > GetNodeById(
            [FromRoute] string clientId, CancellationToken cancellationToken)
        {
            try
            {
                var node = await this.nodeService.GetNodeById(clientId, cancellationToken);

                var data     = this.mapper.Map <NodeDto>(node);
                var response = new JsonOkResponse <NodeDto>(data);
                return(Ok(response));
            }
            catch (Exception e)
            {
                var message  = $"An error accured when fetching AllNodes.";
                var errors   = LogError(e, message);
                var response = new JsonErrorResponse(errors);
                return(StatusCode(500, response));
            }
        }
        /// <summary>
        /// 既定されたJSON形式のエラーメッセージを返す
        /// </summary>
        /// <param name="status">レスポンスのHTTPステータスコード</param>
        /// <param name="message">送信するエラーメッセージ</param>
        protected JsonResult JsonError(HttpStatusCode status, string message)
        {
            var response = new JsonErrorResponse()
            {
                Type     = this.GetType().FullName,
                Title    = message,
                Instance = RequestUrl
            };

            var errors = ModelState?.Values.SelectMany(x => x.Errors);

            if (errors != null && errors.Count() > 0)
            {
                //エラーメッセージがあればそれを出力。なければExceptionのエラーメッセージを出力。
                response.Errors = errors.Select(e => string.IsNullOrEmpty(e.ErrorMessage) ? e.Exception?.Message : e.ErrorMessage);
            }

            return(new CustomJsonResult((int)status, response));
        }
        public void OnException(ExceptionContext context)
        {
            _logger.LogError(new EventId(context.Exception.HResult),
                             context.Exception,
                             context.Exception.Message);

            if (context.Exception.GetType() == typeof(MediatrPipelineException))
            {
                var validationException = context.Exception.InnerException as ValidationException;
                if (validationException != null)
                {
                    var json = new JsonErrorResponse
                    {
                        Messages = validationException.Errors
                                   .Select(e => e.ErrorMessage)
                                   .ToArray()
                    };

                    context.Result = new BadRequestObjectResult(json);
                }
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[]
                    {
                        "Internal Error. Try again later.",
                        context.Exception.GetType().ToString(),
                        context.Exception.Message
                    }
                };

                context.Result = new ObjectResult(json)
                {
                    StatusCode = 500
                };
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            context.ExceptionHandled = true;
        }
Ejemplo n.º 11
0
        public RQItem Post(string dbname, string id, [FromBody] RQItem changeRQItem)
        {
            if (ModelState.IsValid)
            {
                RQItemModelRepository repo  = new RQItemModelRepository((new FormatParameter(FormatParameter.FormatEnum.rqi)));
                RQItemModel           model = null;
                RQItem rqitem = null;

                model  = repo.GetModel("$access$" + id, UserState.States.EditState, true);
                rqitem = model.RQItems.FirstOrDefault(p => p.DocNo == id);
                rqitem.Change(changeRQItem);
                model.Update();
                CacheManager.Clear();
                return(Get("rqitems", id, "rqi", "edititem", ""));
            }
            else
            {
                throw new HttpResponseException(JsonErrorResponse.InvalidData());
            }
        }
Ejemplo n.º 12
0
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.ModelState.IsValid)
        {
            return;
        }

        var validationErrors = context.ModelState
                               .Keys
                               .SelectMany(k => context.ModelState[k].Errors)
                               .Select(e => e.ErrorMessage)
                               .ToArray();

        var json = new JsonErrorResponse
        {
            Messages = validationErrors
        };

        context.Result = new BadRequestObjectResult(json);
    }
        public async Task <IActionResult> GetClientSettings()
        {
            var requestId = Guid.NewGuid().ToString();

            _logger.LogInformation($"RequestID:{requestId} GetClientSettings called.");

            try
            {
                var response = await _contextService.GetClientSetingsAsync();

                return(Ok(JObject.FromObject(response)));
            }
            catch (Exception ex)
            {
                _logger.LogError($"RequestID:{requestId} GetClientSettings error: {ex.Message}");
                var errorResponse = JsonErrorResponse.BadRequest($"GetClientSettings error: {ex.Message}", requestId);

                return(BadRequest(errorResponse));
            }
        }
Ejemplo n.º 14
0
        public RQKosBranch Delete(string id, [FromBody] IEnumerable <RQKosTransfer> RQKosTransferBranch)
        {
            if (ModelState.IsValid)
            {
                RQKosEditModel editModel = new RQKosEditModel(RQKosTransferBranch);

                if (editModel.Delete())
                {
                    return(editModel.RQKosEditSet);
                }
                else
                {
                    throw new HttpResponseException(JsonErrorResponse.Create(editModel.RQKosEditStatus));
                }
            }
            else
            {
                throw new HttpResponseException(JsonErrorResponse.InvalidData());
            }
        }
        public async Task <ActionResult <IEnumerable <ReadingDto> > > GetNodeReadings(
            [FromRoute] string clientId, CancellationToken cancellationToken)
        {
            try
            {
                var readings = await this.nodeService.GetReadingsById(clientId, cancellationToken);

                var data = this.mapper
                           .Map <IEnumerable <Reading>, List <ReadingDto> >(readings);
                var response = new JsonOkResponse <IEnumerable <ReadingDto> >(data);
                return(Ok(response));
            }
            catch (Exception e)
            {
                var message  = $"An error accured when fetching readings for client: {clientId}.";
                var errors   = LogError(e, message);
                var response = new JsonErrorResponse(errors);
                return(StatusCode(500, response));
            }
        }
        public async Task <IActionResult> GetProcessRolesList()
        {
            var requestId = Guid.NewGuid().ToString();

            _logger.LogInformation($"RequestID:{requestId} GetPermissionsAll called.");

            try
            {
                var response = await _contextService.GetProcessRolesList(requestId);

                return(Ok(response));
            }
            catch (Exception ex)
            {
                _logger.LogError($"RequestID:{requestId} GetPermissionsAll error: {ex.Message}");
                var errorResponse = JsonErrorResponse.BadRequest($"GetPermissionsAll error: {ex.Message}", requestId);

                return(BadRequest(errorResponse));
            }
        }
Ejemplo n.º 17
0
        public void OnException(ExceptionContext context)
        {
            _logger.LogError(new EventId(context.Exception.HResult),
                             context.Exception,
                             context.Exception.Message);

            if (context.Exception.GetType() == typeof(ValidationException))
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { context.Exception.Message }
                };

                context.Result = new BadRequestObjectResult(json);
            }
            else if (context.Exception.GetType() == typeof(ServiceException) ||
                     context.Exception.GetType() == typeof(RepositoryException))
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { context.Exception.Message }
                };

                context.Result = new NotFoundRequestObjectResult(json);
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An error occurred. Try it again." }
                };

                if (_env.IsDevelopment())
                {
                    json.DeveloperMessage = context.Exception;
                }

                context.Result = new InternalServerErrorObjectResult(json);
            }
            context.ExceptionHandled = true;
        }
Ejemplo n.º 18
0
        /// <summary/>
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult),
                            context.Exception,
                            context.Exception.Message);

            if (context.Exception.GetType() == typeof(Exception))
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { context.Exception.Message }
                };

                // Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
                //It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
                context.Result = new BadRequestObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An error occur.Try it again." }
                };

                if (env.IsDevelopment())
                {
                    json.DeveloperMessage = context.Exception;
                }

                // Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
                // It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
                context.Result = new ObjectResult(json)
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                };
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }

            context.ExceptionHandled = true;
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 异常发生+
        /// </summary>
        /// <param name="context"></param>
        public void OnException(ExceptionContext context)
        {
            JsonErrorResponse json = new JsonErrorResponse
            {
                Message = context.Exception.Message//错误信息
            };

            if (_env.IsDevelopment())
            {
                json.DevelopmentMessage = context.Exception.StackTrace;//堆栈信息
            }
            if (context.ExceptionHandled == false)
            {
                ResponseResult responseResult = new ResponseResult(ResponseResultMessageDefine.Exception, json.Message);
                JsonResult     result         = new JsonResult(responseResult);

                context.Result = result;
            }
            WriteLog(json.Message, context.Exception);
            context.ExceptionHandled = true; //异常已处理了
        }
Ejemplo n.º 20
0
        public override void OnException(ExceptionContext context)
        {
            //if (context.Exception.GetType().Equals(typeof(UIException)))
            //{
            //    context.Result = new JsonResult(new ReponseModel { Success = false, Data = new List<string>(), Msg = context.Exception.Message });
            //    context.HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
            //}
            //else
            //{
            var json = new JsonErrorResponse();

            json.Message = context.Exception.Message;//错误信息
            if (_env.IsDevelopment())
            {
                json.DevelopmentMessage = context.Exception.StackTrace;//堆栈信息
            }
            context.Result = new InternalServerErrorObjectResult(json);
            //采用log4net 进行错误日志记录
            _logger.LogError(json.Message + WriteLog(json.Message, context.Exception));
            //}
        }
        public async Task <ActionResult <IEnumerable <string> > > UpdateDefinitions(
            [FromRoute] string clientId,
            [FromBody] JsonRequest <IEnumerable <ReadingDefinitionDto> > request,
            CancellationToken cancellationToken)
        {
            try
            {
                var definitions = this.mapper.Map <IEnumerable <ReadingDefinition> >(request.Data);
                var defResult   = await this.nodeService.UpdateDefinitions(
                    clientId, definitions, cancellationToken);

                return(StatusCode(201));
            }
            catch (Exception e)
            {
                var message  = $"An error accured when updating definitions for client: {clientId}.";
                var errors   = LogError(e, message);
                var response = new JsonErrorResponse(errors);
                return(StatusCode(500, response));
            }
        }
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                _logger.LogError($"Bad data passed to model {context.HttpContext.Request.Path}");

                var json = new JsonErrorResponse {
                    Messages = context.ModelState
                };

                if (_env.IsDevelopment())
                {
                    json.DeveloperMessage = context.ModelState.ToString();
                }

                // displays Joi'ish error message
                // context.Result = new UnprocessableEntityObjectResult(json);
                context.Result = new UnprocessableEntityObjectResult(context.ModelState);
                context.HttpContext.Response.StatusCode = StatusCodes.Status422UnprocessableEntity;
            }
        }
        public void OnException(ExceptionContext exceptionContext)
        {
            _logger.LogError(new EventId(exceptionContext.Exception.HResult),
                             exceptionContext.Exception,
                             exceptionContext.Exception.Message);

            var json = new JsonErrorResponse
            {
                Messages = new[] { "An error occurred." }
            };

            if (_hostingEnvironment.IsDevelopment())
            {
                json.DeveloperMessage = exceptionContext.Exception;
            }

            //exceptionContext.Result = new InternalServerErrorObjectResult(json);
            exceptionContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

            exceptionContext.ExceptionHandled = true;
        }
Ejemplo n.º 24
0
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult),
                            context.Exception,
                            context.Exception.Message);

            //if (context.Exception.GetType() == typeof(OrderingDomainException))
            //{
            //  //var problemDetails = new ValidationProblemDetails()
            //  //{
            //  //  Instance = context.HttpContext.Request.Path,
            //  //  Status = StatusCodes.Status400BadRequest,
            //  //  Detail = "Please refer to the errors property for additional details."
            //  //};

            //  //problemDetails.Errors.Add("DomainValidations", new string[] { context.Exception.Message.ToString() });

            //  // context.Result = new BadRequestObjectResult(problemDetails);
            //  context.Result = new BadRequestObjectResult(new { ErrorMessage = context.Exception.Message });
            //  context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            //}
            //else
            //{
            var json = new JsonErrorResponse
            {
                Message = context.Exception.Message
            };

            //if (env.IsDevelopment())
            //{
            //  json.DeveloperMessage = context.Exception;
            //}

            // Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
            // It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
            context.Result = new InternalServerErrorObjectResult(json);
            context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            // }
            context.ExceptionHandled = true;
        }
        public void OnException(ExceptionContext context)
        {
            _logger.LogError(new EventId(context.Exception.HResult),
                             context.Exception,
                             context.Exception.Message);

            if (context.Exception.GetType() == typeof(FantasticStayDomainException))
            {
                var problemDetails = new ValidationProblemDetails()
                {
                    Instance = context.HttpContext.Request.Path,
                    Status   = StatusCodes.Status400BadRequest,
                    Detail   = "Please refer to the errors property for additional details."
                };

                problemDetails.Errors.Add("DomainValidations", new string[] { context.Exception.Message.ToString() });

                context.Result = new BadRequestObjectResult(problemDetails);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                var json = new JsonErrorResponse
                {
                    Messages = new[] { "An error occur.Try it again." }
                };

                if (_environment.IsDevelopment())
                {
                    json.DeveloperMessage = context.Exception;
                }

                context.Result = new ObjectResult(json)
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                };
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            context.ExceptionHandled = true;
        }