Как мне вызвать зонды проверки работоспособности DotNet Core API в контроллере вместо настройки в Ctartup.cs

#asp.net-core #.net-core #health-check

#asp.net-core #.net-core #проверка работоспособности

Вопрос:

Я хотел бы настроить Microsoft.Расширения.Диагностика.Проверяет работоспособность, чтобы я мог настроить тело ответа внутри контроллера вместо стандартной настройки в Startup.cs. Возможно ли это? Если да, то как я могу этого добиться?

Мысль здесь заключается в том, что я хотел бы контролировать логику установки полезной нагрузки ответа и делать это в рамках действия / метода контроллера.

Онлайн содержит четкие инструкции по настройке тестов проверки работоспособности, но все примеры показывают, что настройка выполняется в Startup.cs.

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?view=aspnetcore-3.1

Являются ли зонды строгой настройкой только при запуске? Является ли это ограничением?

Я понимаю, что библиотека healtcheck — это промежуточное программное обеспечение, которое прекратит выполнение запроса от дальнейшего прохождения по конвейеру промежуточного программного обеспечения, и, возможно, удаление промежуточного программного обеспечения будет означать, что все, что было настроено при запуске, теперь должно быть настроено в методе действия контроллера.

Комментарии:

1. Контроллер не даст вам лучшего контроля. Во-первых, нет никаких представлений или даже действий. Конечная точка проверки работоспособности возвращает данные на основе своей конфигурации.

2. @PanagiotisKanavos, хотя я могу согласиться с вами, первое, что нужно сделать, это посмотреть, возможно ли это вообще. Если это невозможно, это добавит ценность к этому сообщению.

3. В чем собственно вопрос? Какой дополнительный контроль вы хотите? Вы уже можете управлять маршрутом и полезной нагрузкой

4. Вопрос именно в этом: возможно ли настроить зонды проверки работоспособности в методах действия контроллера?

5. Потому что вы хотите что-то сделать? Контроллеры — это средство достижения цели, а не сама цель. Вы хотите использовать POST? Несколько относительных путей под URL-адресом healtcheck? Получать входные данные?

Ответ №1:

Можно ли настроить зонды проверки работоспособности в методах действия контроллера?Ответ — нет

Вы можете использовать app.UseHealthChecks пользовательский контроль для проверки работоспособности enpoint

 app.UseHealthChecks("/health-detailed", new HealthCheckOptions
        {
            ResponseWriter = (context, result) =>
            {
                context.Response.ContentType = "application/json";
                
                var json = new JObject(
                    new JProperty("status", result.Status.ToString()),
                    new JProperty("duration", result.TotalDuration),
                    new JProperty("results", new JObject(result.Entries.Select(pair =>
                        new JProperty(pair.Key, new JObject(
                            new JProperty("status", pair.Value.Status.ToString()),
                            new JProperty("tags", new JArray(pair.Value.Tags)),
                            new JProperty("description", pair.Value.Description),
                            new JProperty("duration", pair.Value.Duration),
                            new JProperty("data", new JObject(pair.Value.Data.Select(
                                p => new JProperty(p.Key, p.Value))))))))));
                context.Response.ContentType = MediaTypeNames.Application.Json;
                return context.Response.WriteAsync(
                    json.ToString(Formatting.Indented));
            }
        });
  

Комментарии:

1. Мы не знаем, для чего OP нужен контроллер. Если это для пользовательского интерфейса, для этого уже есть пакеты. Если это нужно для настройки вывода — в первую очередь, контроллер не нужен

2. @PanagiotisKanavos: Было бы полезно, если бы вы включили пакет, который мог бы использовать этот человек. Я бы предложил использовать github.com/Xabaril/AspNetCore . Диагностика. Проверки работоспособности

Ответ №2:

TL amp; DR: используйте эту библиотеку: https://github.com/Xabaril/AspNetCore .Диагностика.Проверяет работоспособность, если вы хотите, чтобы что-то уже было создано.

Этот веб-сайт предоставляет множество полнофункциональных проверок работоспособности для различных сервисов, таких как PostGres, Redis, S3 и т. Д.

Комментарии:

1. Это не то, что задал OP, кроме того, он уже связан с документами, на которые ссылается вопрос. OP хотел настроить проверки работоспособности в самом действии контроллера, а не Startup в .NET 6, в Program . OP еще не объяснил, в чем собственно проблема. Возможно, они хотят активировать / деактивировать проверки с помощью вызовов API? Это не то, что задает вопрос, и в любом случае это не будет сделано путем настройки проверок работоспособности в actions