Uvolňujte odpovědi HttpWebRequest mezi proxy požadavky
Dejte starým odpovědím HttpWebRequest jasnou životnost, aby opakované proxy požadavky nedržely prostředky připojení donekonečna.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Každou starou odpověď HttpWebRequest držte v rozsahu, který dokončí její spotřebu a uvolní ji. Zde destination je zapisovatelný výstupní proud aplikace; blok using uvolní WebResponse, i když kopírování selže, aniž by převzal vlastnictví tohoto výstupu.
Úspěch jednoho proxy požadavku a čekání dalších může znamenat nedokončené odpovědi zabírající prostředky připojení. Pouhé přijetí WebResponse nedokončí jeho tělo. Časový limit požadavku omezuje čekání, ne životnost každé už získané odpovědi.
Stejné vlastnictví uplatněte na chyby. WebException může nést odpověď, kterou váš kód zkoumá; po prozkoumání ji zavřete. Selhání přenosu nemusí mít žádnou odpověď.
Uvolnění vrátí prostředky odpovědi, ale v každém případě neslibuje znovupoužitelná připojení. Protokol, server a spotřeba těla jsou stále důležité.
Týká se údržby starého zásobníku WebRequest. V novějším kódu se řiďte vlastnictvím odpovědi/proudu skutečného klienta; u HttpClient držte odpovědi v jejich rozsahu uvolnění a tuto chybu úklidu odlište od ověřování proxy nebo volby trasy.