using (WebResponse response = request.GetResponse())
{
    response.GetResponseStream().CopyTo(destination);
}

Hold hvert ældre HttpWebRequest-svar i et scope, der færdigforbruger og frigiver det. Her er destination applikationens skrivbare outputstrøm; using-blokken frigiver WebResponse, selv hvis kopieringen fejler, uden at overtage ejerskabet af den output.

At én proxyanmodning lykkes og senere venter kan tyde på uafsluttede svar, der optager forbindelsesressourcer. Det er ikke nok at modtage WebResponse for at afslutte dets body. Anmodningens timeout begrænser en ventetid, ikke levetiden for hvert svar, der allerede er hentet.

Anvend samme ejerskab på fejl. En WebException kan bære et svar, som din kode undersøger; luk det efter undersøgelsen. En transportfejl kan slet ikke have noget svar.

Frigivelse frigiver svarets ressourcer, men lover ikke genbrugelige forbindelser i alle tilfælde. Protokol, server og body-forbrug har stadig betydning.

Det handler om vedligeholdelse af den ældre WebRequest-stack. Følg svar-/strøm-ejerskabet for den faktiske klient i nyere kode; for HttpClient, hold svar inden for deres frigivelsesscope, og identificér denne oprydningsfejl adskilt fra proxygodkendelse eller rutevalg.

Relaterede artikler