Я хочу использовать Polly не для проверки явных "сбоев", а скорее для других условий. В частности, я хочу сделать один (асинхронный) вызов, например httpClient.GetAsync(...)
, который для целей этого вопроса, как я знаю, будет успешным, то есть после выполнения:
var response = await _myHttpRequestPolicy.ExecuteAsync(() => httpClient.GetAsync(uri));
response.IsSuccessStatusCode
будет true
.
Предположим, что я делаю стандарт:
var content = await response.Content.ReadAsStringAsync();
и
content == { "Name":"Tom", "Age", 30", "ErrorCode":"12345" }
Я хочу, чтобы логика моей политики выполнялась на основе содержимого (или отсутствия или присутствия) ErrorCode
части ответа. Так что это всего лишь один звонок, который я делаю.
Как я могу сделать это с Полли?
.HandleResult(...)
, и вы можете использовать это напрямую, сначала нужно использовать.Handle<SomeException>(...)
. Однако если условие результата зависит от получения ответа с помощью дополнительного вызова async, на него не распространяется ни одна политика Polly. См. этот вопрос и ответ - относится ли это также к вашему вопросу? - person mountain traveller   schedule 06.08.2018await
(как обсуждалось в этом вопросе и ответе), вместо того, чтобы пытаться ввести любоеawait
в (внутри) предложенияHandleResult(...)
, то, конечно, вы можете это сделать. Я думаю, что ответ здесь дает точный ответ на ваш вопрос , но дайте мне знать, если нет! - person mountain traveller   schedule 06.08.2018