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-ыг төгсгөлгүй асуух давталтаар солих хэрэггүй.

Холбоотой нийтлэлүүд