public void OnException(ExceptionContext context) { _logger.LogInformation(context.Exception, ThrowIf.GetInnerMostException(context.Exception).Message); Exception exception = ThrowIf.GetInnerMostException(context.Exception); IFilterMetadata rateLimitFilter = context.Filters.Where(x => x.GetType().Name == "RateLimitFilter").FirstOrDefault(); Type objectType = null; if (rateLimitFilter != null) { objectType = ((RateLimitFilter)rateLimitFilter).ObjectType; } ObjectResult objectResult = null; if (objectType == null) { ApiErrorResult apiError = new ApiErrorResult(); apiError.Message = exception != null ? exception.Message : "Unexpected Json Error"; apiError.StackTrace = exception?.StackTrace; objectResult = new ObjectResult(apiError); } else { IEntityService entityService = Activator.CreateInstance(((RateLimitFilter)rateLimitFilter).ObjectType) as IEntityService; entityService.Message = exception != null ? exception.Message : "Unexpected Json Error"; entityService.StackTrace = exception?.StackTrace; objectResult = new ObjectResult(entityService); } context.Result = new ObjectResult(objectResult) { StatusCode = context.HttpContext.Response.StatusCode }; }