private async Task GetIdentityServerHealthCheck() { logger.LogInformation("Retrieving Identity Server Status."); var item = cache.Get<ServiceStatusModel>(HealthCheckConstants.CACHE_KEY_IDS); var age = item != null ? (DateTime.UtcNow - item.Timestamp).TotalSeconds : int.MaxValue; if (age >= 30) { var stopwatch = new Stopwatch(); stopwatch.Start(); ServiceStatusModel serviceStatusModel; try { var identityServerTask = await healthService.GetIdentityServerHealthCheck(); serviceStatusModel = new ServiceStatusModel { Healthy = identityServerTask.Healthy, Status = identityServerTask.Healthy ? ServiceStatus.Ok : ServiceStatus.Failure, Timestamp = DateTime.UtcNow }; } catch { serviceStatusModel = new ServiceStatusModel() { Healthy = false, Timestamp = DateTime.UtcNow }; } // Store it in cache cache.Set(HealthCheckConstants.CACHE_KEY_IDS, serviceStatusModel, DateTimeOffset.Now.AddSeconds(45)); stopwatch.Stop(); RecordTelemetry("identityserver", stopwatch.Elapsed, serviceStatusModel.Healthy, JsonConvert.SerializeObject(serviceStatusModel)); } }