#.net #.net-core #health-check
#.net #.net-core #проверка работоспособности
Вопрос:
Очевидно, что что-то не может быть нулевым, но я не могу понять это. У меня есть служба Windows, которая размещается самостоятельно и имеет конечную точку, которая возвращает a HealthCheckResult
. Затем у меня есть веб-приложение .Net Core, которое использует HealthChecks-UI
. Однако, когда я запускаю оба приложения, пользовательский интерфейс проверки работоспособности сообщает, что моя служба находится в плохом состоянии, но в то же время я могу перейти по URL-адресу в своей службе Windows и получить статус работоспособности.
Когда я смотрю на результат, я получаю —
Отправка HTTP-запроса GET {url}
Получен HTTP-ответ — ОК
Сборщик HostedService для проверки работоспособности выдал ошибку: значение не может быть нулевым. (Параметр ‘source’)
Для меня я получаю хороший ответ 200, но что-то не получается. В идеале я бы использовал HealthChecks
библиотеку в своем приложении, которую я хочу отслеживать, но я не могу, потому что это служба Windows. Вот почему я решил реализовать свой собственный и просто предоставить restful, автономную конечную точку. Я использую версии 3.1 HealthChecks-UI
.
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddHealthChecksUI()
.AddInMemoryStorage();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting()
.UseEndpoints(config =>
{
config.MapHealthChecksUI();
});
}
AppSettings.json
{
"HealthChecks-UI": {
"HealthChecks": [
{
"Name", "Windows Service", "Uri": "{myRestfulEndpoint}"
}
],
"Webhooks": []
}
}
Ответ №1:
Предполагая, что вы используете AspNetCore.Диагностика, проверьте эту проблему на github (в частности, этот комментарий). Похоже, у вас та же проблема, что и в списке (не удалось найти файл конфигурации без настройки HostDefaults.ContentRootKey
в WebHostBuilder).
Комментарии:
1. Интересно. Это действительно имело значение, но теперь вместо получения
Value cannot be null
ошибки я получаюObject not set to an instance
сообщение об ошибке.