예제 #1
0
        public override void Handle(ExceptionHandlerContext context)
        {
            if (_logger == null)
            {
                _logger = LogManager.GetLogger <GlobalExceptionHandler>();
            }

            var exception = context.Exception;

            _logger.Error(exception.Message, exception);

            while (exception.InnerException != null)
            {
                exception = exception.InnerException;
            }

            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.AdditionalInfo = exception.Message;
            errorResponse.ErrorCode      = "InternalServerError";
            errorResponse.AddErrorMessage(Resources.GlobalError);

            var response = context.Request.CreateResponse(HttpStatusCode.InternalServerError, errorResponse);

            context.Result = new ResponseMessageResult(response);
        }
예제 #2
0
        public override void OnException(ExceptionContext context)
        {
            if (context.Exception == null)
            {
                context.ExceptionHandled = false;
                return;
            }

            if (!ExceptionType.IsInstanceOfType(context.Exception))
            {
                context.ExceptionHandled = false;
                return;
            }

            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = Code;
            errorResponse.AddErrorMessage(Message);
            errorResponse.AdditionalInfo = context.Exception.Message;

            ObjectResult objectResult = new ObjectResult(errorResponse)
            {
                StatusCode = (int)StatusCode
            };

            context.ExceptionHandled = true;
            context.Result           = objectResult;

            _logger?.LogInformation($"Exception:{context.Exception.GetType()} is transfrormed.");
        }
예제 #3
0
        public override void OnException(ExceptionContext context)
        {
            ControllerActionDescriptor actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;

            if (actionDescriptor != null)
            {
                var attribute = actionDescriptor.ControllerTypeInfo.GetCustomAttribute(typeof(ApiControllerAttribute));

                if (attribute != null)
                {
                    _logger.LogError(context.Exception, context.Exception?.Message);

                    ErrorResponse errorResponse = new ErrorResponse();
                    errorResponse.AdditionalInfo = context.Exception?.Message;
                    errorResponse.ErrorCode      = "InternalServerError";
                    errorResponse.AddErrorMessage("There was a problem while processing your request.");

                    if (EnvironmentName?.ToLowerInvariant() != "production")
                    {
                        errorResponse.Exception = context.Exception?.ToString();
                    }

                    var objectResult = new ObjectResult(errorResponse);
                    objectResult.StatusCode = 500;

                    context.Result = objectResult;
                }
            }
        }
예제 #4
0
        protected IActionResult InvalidRequest(ModelStateDictionary modelState)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = "BadRequest";

            if (modelState.IsValid)
            {
                throw new Exception("You cannot call InvalidRequest with a valid ModelState.");
            }

            foreach (var state in modelState.Values)
            {
                if (state.Errors.HasElements())
                {
                    foreach (ModelError modelStateError in state.Errors)
                    {
                        errorResponse.AddErrorMessage(modelStateError.GetErrorMessage());
                    }
                }
            }

            Logger?.LogInformation($"InvalidRequest: {errorResponse.GetFullMessage()}");

            return(BadRequest(errorResponse));
        }
예제 #5
0
        protected IActionResult NotFound(string errorMessage)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.AddErrorMessage(errorMessage);

            return(base.NotFound(errorResponse));
        }
        protected IHttpActionResult InvalidRequest(string errorMessage, string errorCode)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = errorCode;
            errorResponse.AddErrorMessage(errorMessage);

            return(Content(HttpStatusCode.BadRequest, errorResponse));
        }
예제 #7
0
        protected IActionResult InvalidRequest(string errorMessage, string errorCode)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = errorCode;
            errorResponse.AddErrorMessage(errorMessage);

            return(BadRequest(errorResponse));
        }
예제 #8
0
        protected IHttpActionResult Forbidden(string errorMessage, string errorCode)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = errorCode;
            errorResponse.AddErrorMessage(errorMessage);

            return(Content(HttpStatusCode.Forbidden, errorResponse));
        }
예제 #9
0
        protected IHttpActionResult InternalServerError(string errorMessage, string additionalInfo = null)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode      = "InternalServerError";
            errorResponse.AdditionalInfo = additionalInfo;
            errorResponse.AddErrorMessage(errorMessage);

            return(Content(HttpStatusCode.InternalServerError, errorResponse));
        }
            private HttpResponseMessage Execute()
            {
                ErrorResponse errorResponse = new ErrorResponse();

                errorResponse.AddErrorMessage(ReasonPhrase);

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Unauthorized, errorResponse);

                return(response);
            }
예제 #11
0
        protected IActionResult Forbidden(string errorMessage, string errorCode)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = errorCode;
            errorResponse.AddErrorMessage(errorMessage);

            Logger?.LogWarning($"Forbidden: {errorResponse.GetFullMessage()}");

            return(StatusCode(HttpStatusCode.Forbidden.ToInt(), errorResponse));
        }
예제 #12
0
        protected IActionResult InvalidRequest(string errorMessage, string errorCode)
        {
            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.ErrorCode = errorCode;
            errorResponse.AddErrorMessage(errorMessage);

            Logger?.LogInformation($"InvalidRequest: {errorResponse.GetFullMessage()}");

            return(BadRequest(errorResponse));
        }
예제 #13
0
        public void OnException(ExceptionContext context)
        {
            ErrorResponse  errorResponse = new ErrorResponse();
            HttpStatusCode resultHttpStatusCode;

            if (context.Exception is CustomApiException customApiException)
            {
                errorResponse.AddErrorMessage(customApiException.FriendlyMessage);
                resultHttpStatusCode = customApiException.ReturnHttpStatusCode;
            }
            else
            {
                errorResponse.AddErrorMessage("Unexpected error occured", context.Exception);
                resultHttpStatusCode = HttpStatusCode.InternalServerError;
            }

            context.Result = new ObjectResult(errorResponse)
            {
                StatusCode = (int)resultHttpStatusCode,
            };

            DoLogging(context.Exception, resultHttpStatusCode);
        }
            public async Task <HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
            {
                HttpResponseMessage response = await InnerResult.ExecuteAsync(cancellationToken);

                if (response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    if (response.Headers.WwwAuthenticate.All(h => h.Scheme != Challenge.Scheme))
                    {
                        response.Headers.WwwAuthenticate.Add(Challenge);


                        ErrorResponse errorResponse = new ErrorResponse();
                        errorResponse.AddErrorMessage("Unauthorized");

                        response = response.RequestMessage.CreateResponse(HttpStatusCode.Unauthorized, errorResponse);
                    }
                }

                return(response);
            }
예제 #15
0
        public override void OnException(ExceptionContext context)
        {
            _logger.LogError(context.Exception, context.Exception?.Message);

            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.AdditionalInfo = context.Exception?.Message;
            errorResponse.ErrorCode      = "InternalServerError";
            errorResponse.AddErrorMessage("There was a problem while processing your request.");

            if (EnvironmentName?.ToLowerInvariant() != "production")
            {
                errorResponse.Exception = context.Exception?.ToString();
            }

            var objectResult = new ObjectResult(errorResponse);

            objectResult.StatusCode = 500;

            context.Result = objectResult;
        }
예제 #16
0
        public override void OnException(ExceptionContext context)
        {
            while (context.Exception?.InnerException != null)
            {
                context.Exception = context.Exception.InnerException;
            }

            _logger.LogError(context.Exception, "There was a problem while processing your request.");

            ErrorResponse errorResponse = new ErrorResponse();

            errorResponse.AdditionalInfo = context.Exception?.Message;
            errorResponse.ErrorCode      = "InternalServerError";
            errorResponse.AddErrorMessage("There was a problem while processing your request.");

            var objectResult = new ObjectResult(errorResponse);

            objectResult.StatusCode = 500;

            context.Result = objectResult;
        }