Секундомер күтүүнү токтотсо да, HTTP сурамы улана берет. Прокси аркылуу аракеттин болжолдонгон бюджети болсо, токтотууну операциянын өзүнө бериңиз.

Бар прокси үчүн конфигурацияланган HttpClient бар заманбап .NET колдонмосу үчүн:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
    targetUrl,
    HttpCompletionOption.ResponseHeadersRead,
    budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);

Ошол эле бюджет даярдоодон мурун башталып, дене окулуп жатканда активдүү бойдон калат. ResponseHeadersRead башкарууну аталыштардан кийин кайтарат, ошондуктан HttpClient'тин өзүнүн бүтүү таймауту кийинки денени окуу бюджетасын өз алдынча аныктабайт.

Токтотууну HTTP статусунан жана транспорт каталарынан бөлүп туруңуз. OperationCanceledException берилген токенден же башка конфигурацияланган таймауттан келиши мүмкүн; ар бир ийгиликсиздикти өлгөн прокси деп билдирүүнүн ордуна тиешелүү токтотуу булагын текшериңиз.

Бул прокси маршрутуна ээ клиентти кайра колдонуңуз. Аракетти токтотуу ар бир кийинки сурам үчүн бүт байланыш пулун кайра курууну билдирбейт.

Мисал чектелүү жооп денесин буферлейт. Агымдык жүктөө токенди өзүнүн агымды көчүрүү цикли аркылуу өткөрүп, ар бир чыгуу жолунда жоопту бошотуу керек.

Токтотуу операция саясатын билдирет, ар бир негизги платформа аракети үчүн так убакыт убадасы эмес. Аны Task.IsCompleted боюнча чексиз суроо цикли менен алмаштыруудан качыңыз.

Тектеш макалалар