Я реализовал проверку работоспособности с помощью ResponseWriter:
services.AddHealthChecks()
.AddCheck("My Health Check", new MyHealthCheck(aVariable));
app.UseHealthChecks("/health", new HealthCheckOptions()
{
ResponseWriter = WriteHealthCheckResponse
});
private static Task WriteHealthCheckResponse(HttpContext httpContext, HealthReport result){
httpContext.Response.ContentType = "application/json";
var json = new JObject(
new JProperty("status", result.Status.ToString()),
new JProperty("results", new JObject(result.Entries.Select(pair =>
new JProperty(pair.Key, new JObject(
new JProperty("status", pair.Value.Status.ToString()),
new JProperty("description", pair.Value.Description)))))));
return httpContext.Response.WriteAsync(
json.ToString(Formatting.Indented));}
Я ожидал, что он вернет файл health.json , однако он возвращает только health .Браузер не распознает файл без расширения и не хочет его открывать, поэтому я хочу контролировать имя файла.
Как я могу контролировать имя файла ответа?
Обновление:
Когда проверка состояния пройдена, я теперь делаю получаю файл health.json (который можно открыть).Однако при сбое проверки работоспособности я получаю файл health .
При попытке загрузить сообщение о сбое health (работоспособность без расширения .json) я получаю толькочастичная загрузка, которая может быть открыта, но остается пустой.
Итак, что не так с потоком non-happy в этом коде:
public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default(CancellationToken)){
var isHealthy = false;
try
{
var executionResult = _service.ExecuteExample();
isHealthy = executionResult != null;
}
catch
{
//This should not throw an exception.
}
HealthCheckResult healthResult = isHealthy
? HealthCheckResult.Healthy("The service is responding as expected.")
: HealthCheckResult.Unhealthy("There is a problem with the service.");
return Task.FromResult(healthResult);}