Я начал использовать проверки работоспособности из Asp.net Core, мне они нравятся, но я не смог найти простой способ связать их с маршрутизацией на основе клиентов, например, с поддержкой:
- /health [общие проверки, не относящиеся к арендатору]
- /{tenant}/health [проверка клиента]
Если бы я преуспел с этим подходом, я мог бы использовать теги, чтобы отфильтровать, какую проверку работоспособности использовать, но, к сожалению, мне не удалось настроить маршрутизацию для запроса.
app.UseEndpointRouting();
app.UseHealthChecks("/{tenant}/health", new HealthCheckOptions
{
ResponseWriter = WriteCustomHealthResponse,
AllowCachingResponses = false,
Predicate = _ => _.Tags.Contains("tenant-specific")
});
Приведенный выше код неправильно маршрутизируется. Я изучил возможность использовать что-то вроде следующего:
app.MapWhen(context =>
context.Request.Method == HttpMethod.Get.Method &&
context.Request.?ROUTEDATA?.SOMECHECK("/{tenant}/HealthCheck"),
builder => builder.UseHealthChecks());
Но в этом случае у меня нет возможности проверить правильность маршрутизации.