Как получить URL-адрес для проверки работоспособности текущего сервиса? - PullRequest
0 голосов
/ 04 августа 2020

Мне нужна помощь с этим предметом. Проблема заключается в следующем: мне нужно добавить проверку работоспособности моей службы:

// Add the health checks.
services.AddHealthChecks()
        .AddSqlServer(Configuration["ConnectionStrings:MyConnectionString"])
        .AddCheck("Offices Health Check", new OfficeHealthCheck(), HealthStatus.Unhealthy)
;

Для этого у меня есть класс OfficeHealthCheck.cs, который реализует IHealthCheck и определяет следующую функцию:

private async Task<bool> GetOffices()
{
    bool isHealthy = false;

    Uri apiUri = new Uri("http://localhost:58355/api/offices");

    using (HttpClient client = new HttpClient())
    {
        var result = await client.GetAsync(apiUri);

        if (result.IsSuccessStatusCode)
            isHealthy = true;
    }

    return isHealthy;
}

Проблема, которую я пытаюсь решить, заключается в том, как изменить "localhost: 58355" на текущий сервер, на котором я запускаю службу (и проверка работоспособности, и точка, которую я вызываю, являются частью одной службы) , например http://myproductionserver.com/api/offices или http://mystageserver.org/api/offices и так далее ...

Я читал некоторые статьи, в которых упоминалось добавление синглтона с помощью, но мне не удалось правильно реализовать IHttpContextAccessor. Я добавил синглтон и добавил часть в объект следующим образом:

public class OfficeHealthCheck : IHealthCheck
    {
private readonly IHttpContextAccessor _httpContextAccesor;

public RegionHealthCheck(IHttpContextAccessor httpContextAccessor) { 
    _httpContextAccesor = httpContextAccessor
}

Но теперь он просит меня передать экземпляр IHttpContextAccessor в конструктор в этой строке, что я не знаю, как это сделать. :

// Add the health checks.
        .AddCheck("Offices Health Check", new OfficeHealthCheck() 
;

Любая помощь приветствуется

1 Ответ

0 голосов
/ 04 августа 2020

Измените это:

// Add the health checks.
        .AddCheck("Offices Health Check", new OfficeHealthCheck() 

На это:

// Add the health checks.
        .AddCheck<OfficeHealthCheck>("Offices Health Check") 
...