private ApiErrorDTO BuildErrorObject(ILogger log, Exception ex)
        {
            ApiErrorDTO errorDto = new ApiErrorDTO();


            if (ex is IPassthroughException passThroughException)
            {
                errorDto.Message = passThroughException.DisplayMessage;
                log.Warning(ex, ex.Message);
                return(errorDto);
            }

            errorDto.Message = ex.Message;

            if (ex is ICorrelationException correlationException)
            {
                errorDto.CorrelationId = correlationException.CorrelationId;
            }

            log.Error(ex, errorDto.Message);

#if DEBUG
            errorDto.StackTrace = ex.ToString();
#endif

            return(errorDto);
        }
        public void OnException(ExceptionContext context)
        {
            var error = new ApiErrorDTO();

            if (_env.IsDevelopment())
            {
                error.Key     = "unknownError";
                error.Message = context.Exception.Message;
                error.Detail  = context.Exception.StackTrace;
            }
            else
            {
                error.Key     = "unknownError";
                error.Message = "A server error occurred.";
                error.Detail  = context.Exception.Message;
            }

            context.Result = new ObjectResult(error)
            {
                StatusCode = 500
            };
        }