/// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        public override void OnException(ExceptionContext context)
        {
            if (context.Exception is DomainForbiddenException)
            {
                context.Result = new ForbidResult();
            }

            if (context.Exception is DomainBaseException ex)
            {
                ApiExceptionResult result = new ApiExceptionResult()
                {
                    Message       = ex.Message,
                    ErrorTypeCode = (int)ex.GetExceptionTypeCode(),
                    ErrorTypeName = ex.GetExceptionTypeDescription(),
                    RelatedField  = ex.RelatedField,
                    RelatedObject = ex.RelatedObject.FullName
                };

                if (ex.GetErrorType() == HttpErrorType.Client)
                {
                    context.Result = new BadRequestObjectResult(result);
                }

                if (ex.GetErrorType() == HttpErrorType.NotFound)
                {
                    context.Result = new NotFoundObjectResult(result);
                }
            }
        }
        public void OnException(ExceptionContext context)
        {
            if (context.Exception is ApiDomainException domainException)
            {
                //var aggregateMessage = domainException.Messages == null
                //    ? context.Exception.Message
                //    : JsonConvert.SerializeObject(domainException.Messages);

                //_logger.LogError(new EventId(context.Exception.HResult),
                //    context.Exception,
                //    aggregateMessage);

                var result = ApiErrorResult.BadRequest(domainException.Messages ?? new[] { context.Exception.Message });

                context.Result = new BadRequestObjectResult(result);
                context.HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
            }
            else
            {
                _logger.LogError(new EventId(context.Exception.HResult),
                                 context.Exception,
                                 context.Exception.Message);

                object devMessage = null;
                if (_env.IsDevelopment())
                {
                    devMessage = LogFormatter.PrintException(context.Exception);
                }

                var result = ApiExceptionResult.InternalServerError(new[] { "An server error occur." }, devMessage);

                context.Result = new InternalServerErrorObjectResult(result);
                context.HttpContext.Response.StatusCode = StatusCodes.Status500InternalServerError;
            }

            context.ExceptionHandled = true;
        }
示例#3
0
        public InternalServerErrorObjectResult ServerError(int status = StatusCodes.Status500InternalServerError, params string[] messages)
        {
            var result = ApiExceptionResult.InternalServerError(messages);

            return(new InternalServerErrorObjectResult(result));
        }
示例#4
0
        public InternalServerErrorObjectResult ServerError(params string[] messages)
        {
            var result = ApiExceptionResult.GatewayTimeout(messages);

            return(new InternalServerErrorObjectResult(result));
        }
示例#5
0
        public InternalServerErrorObjectResult Timeout(int status = StatusCodes.Status504GatewayTimeout, params string[] messages)
        {
            var result = ApiExceptionResult.GatewayTimeout(messages, status);

            return(new InternalServerErrorObjectResult(result, result.Status));
        }
示例#6
0
        public InternalServerErrorObjectResult Timeout(object messages)
        {
            var result = ApiExceptionResult.GatewayTimeout(messages);

            return(new InternalServerErrorObjectResult(result, result.Status));
        }