Мы переопределяем метод SendAsync в System.Net.Http.DelegatingHandler для запуска некоторой настраиваемой логики:
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//logic block 1
var response = await base.SendAsync(request, cancellationToken);
//logic block 2
}
Кроме того, в вызовах запроса мы выполняем вызовы gRPC.
Проблема, с которой мы сталкиваемся, заключается в том, что иногда, когда возникает ошибка, код в логическом блоке 2 не запускается, и нет четкой причины, почему это не происходит каждый раз, когда мы видим ошибку.Мы видели только эту проблему на нашем сервере IIS, и когда мы пытаемся воссоздать эту ошибку локально, мы не можем воспроизвести ее.
У нас есть ощущение, что жизненный цикл http-сообщения обрывается из-за недоступности или тайм-аутов gRPC.
Любые идеи о причине приветствуются!