Как получить URL для текущей проверки работоспособности службы?

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

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

Проблема, которую я пытаюсь решить, заключается в том, как изменить локальный хост: 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() 
;

Любая помощь будет оценена


person Jalex23    schedule 04.08.2020    source источник


Ответы (1)


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

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

К этому:

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