Проверка работоспособности, веб-API ASP.NET

В моей работе меня попросили реализовать проверки работоспособности в ASP.NET Web API 2, написанном на C#. Я искал, но вся документация предназначена для ASP.NET Core и его реализации. Кто-нибудь знает, как реализовать функции проверки работоспособности в классической/полной .NET Framework?


person Camilo Garcia    schedule 12.06.2020    source источник
comment
Вероятно, создайте фиктивную достижимую конечную точку, которая также проверяет зависимые внешние ресурсы (например, соединения с базой данных). Затем создайте некоторое внешнее событие (повторяющееся и/или запускаемое вручную), которое проверяет эту конечную точку и сообщает о результатах.   -  person Igor    schedule 12.06.2020
comment
В app.metrics есть проверки работоспособности.   -  person Daniel A. White    schedule 12.06.2020


Ответы (1)


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

  1. Создайте новый контроллер. В этом примере я назову его HealthController.
  2. Добавьте действие в контроллер и аннотируйте его с помощью [HttpGet]
  3. Поместите логику внутри действия, которое проверяет стабильность внешних зависимостей. Например, если доступ к диску имеет решающее значение для вашего API, запустите один или два теста, чтобы убедиться, что диск отвечает так, как вам нужно. Если вам нужно иметь возможность запрашивать базу данных, сделайте пример запроса и убедитесь, что он выполнен успешно. Эта часть полностью настраиваемая и действительно зависит от вашего API и от того, как он должен работать.
public class HealthController : ApiController
{
    [HttpGet]
    public IHttpActionResult Check()
    {
        // Add logic here to check dependencies
        if (/* successful */)
        {
            return Ok();
        }

        return InternalServerError(); // Or whatever other HTTP status code is appropriate
    }
}
  1. Попросите внешнюю службу отправить запрос GET к вашей конечной точке (в настоящее время по адресу https://whatever.your.domain.is/Health/Check) и сообщить, если не получит 200 OK в течение некоторого времени.

Я использовал Amazon CloudWatch в прошлое, и я был доволен этим. Будут и другие сервисы, которые сделают это за вас, но у меня нет опыта работы с ними.

person techfooninja    schedule 12.06.2020