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 }; }