Esempio n. 1
0
        private static ProblemDetails HandleKnownException(Exception exception, ModelStateDictionary modelState)
        {
            ProblemDetails problemDetails;

            switch (exception)
            {
            case IdentityResultException ex:
                modelState ??= new ModelStateDictionary();
                foreach (var error in ex.Errors)
                {
                    modelState.TryAddModelError(error.Code, error.Description);
                }

                problemDetails = ProblemDetailsFactory.New(HttpStatusCode.BadRequest, modelState, ex);
                break;

            case NotFoundException ex:
                problemDetails = ProblemDetailsFactory.New(HttpStatusCode.NotFound, ex);
                break;

            case EmailNotConfirmedException ex:
                problemDetails = ProblemDetailsFactory.New(HttpStatusCode.BadRequest, ex);
                break;

            default:
                problemDetails = ProblemDetailsFactory.New(HttpStatusCode.BadRequest, exception);
                break;
            }

            return(problemDetails);
        }
Esempio n. 2
0
        private static ProblemDetails HandleInternalServerError(
            Exception exception,
            bool isTrusted)
        {
            var problemDetails = ProblemDetailsFactory.New(
                HttpStatusCode.InternalServerError,
                isTrusted ? exception.Demystify().ToString() : exception.Message);

            return(problemDetails);
        }
Esempio n. 3
0
        private static ProblemDetails HandleBadHttpRequestException(
            BadHttpRequestException exception,
            bool isTrusted)
        {
            var propertyInfo = typeof(BadHttpRequestException).GetProperty(
                "StatusCode",
                BindingFlags.NonPublic | BindingFlags.Instance);
            var statusCode = (int?)propertyInfo?.GetValue(exception);

            var problemDetails = ProblemDetailsFactory.New(
                statusCode == null ? HttpStatusCode.InternalServerError : (HttpStatusCode)statusCode,
                isTrusted ? exception.Demystify().ToString() : exception.Message);

            return(problemDetails);
        }