Saniyəölçən gözləməni dayandıra bilər, halbuki HTTP sorğusu davam edir. Proksi cəhdinin nəzərdə tutulan büdcəsi olduqda ləğvi əməliyyatın özünə verin.

Mövcud proksi ilə konfiqurasiya edilmiş HttpClient olan müasir .NET tətbiqi üçün:

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);

Eyni büdcə qurmadan əvvəl başlayır və gövdə oxunarkən aktiv qalır. ResponseHeadersRead nəzarəti başlıqlardan sonra qaytarır, ona görə də HttpClient-in öz tamamlanma müddəti sonrakı gövdə oxuma büdcəsini tək başına müəyyən etmir.

Ləğvi HTTP statusundan və nəqliyyat xətalarından ayrı saxlayın. OperationCanceledException verilən tokendən və ya başqa konfiqurasiya edilmiş müddətdən gələ bilər; hər uğursuzluğu ölü proksi kimi bildirmək əvəzinə uyğun ləğv mənbəyini yoxlayın.

Bu proksi marşrutuna sahib olan klienti təkrar istifadə edin. Cəhdin ləğvi hər sonrakı sorğu üçün bütün əlaqə hovuzunun yenidən qurulması demək deyil.

Nümunə məhdud cavab gövdəsini buferləşdirir. Axınlı yükləmə tokeni axın-kopyalama dövrü boyunca ötürməli və cavabı hər çıxış yolunda azad etməlidir.

Ləğv əməliyyat siyasətini ifadə edir, hər əsas platforma əməliyyatı üçün dəqiq divar saatı vədi deyil. Onu Task.IsCompleted üzərində sonsuz sorğu dövrü ilə əvəz etməkdən çəkinin.

Əlaqəli məqalələr