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

Manteniu cada resposta antiga d'HttpWebRequest en un àmbit que n'acabi el consum i la alliberi. Aquí destination és el flux de sortida escribible de l'aplicació; el bloc using allibera la WebResponse encara que la còpia falli, sense assumir la propietat d'aquesta sortida.

Que una sol·licitud de proxy reeixi i les posteriors esperin pot indicar respostes inacabades que ocupen recursos de connexió. Rebre la WebResponse no n'acaba el cos. El temps d'espera de la sol·licitud limita una espera, no la vida útil de cada resposta ja obtinguda.

Apliqueu la mateixa propietat als errors. Una WebException pot portar una resposta que el vostre codi inspecciona; tanqueu-la després d'inspeccionar-la. Una fallada de transport pot no tenir cap resposta.

L'alliberament retorna els recursos de la resposta, però no promet connexions reutilitzables en tots els casos. El protocol, el servidor i el consum del cos encara importen.

Això afecta el manteniment de la pila WebRequest antiga. En codi més nou, seguiu la propietat de resposta/flux del client real; per a HttpClient, manteniu les respostes dins del seu àmbit d'alliberament, i identifiqueu aquesta fallada de neteja per separat de l'autenticació del proxy o de la selecció de ruta.

Articles relacionats