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); }
private static ProblemDetails HandleInternalServerError( Exception exception, bool isTrusted) { var problemDetails = ProblemDetailsFactory.New( HttpStatusCode.InternalServerError, isTrusted ? exception.Demystify().ToString() : exception.Message); return(problemDetails); }
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); }