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

Manteña cada resposta antiga de HttpWebRequest nun ámbito que remate de consumila e a libere. Aquí destination é o fluxo de saída escribible da aplicación; o bloque using libera o WebResponse aínda que a copia falle, sen asumir a propiedade desa saída.

Que unha solicitude de proxy teña éxito e as seguintes esperen pode indicar respostas inacabadas que ocupan recursos de conexión. Recibir o WebResponse non remata o seu corpo. O tempo de espera da solicitude limita unha espera, non a vida útil de cada resposta xa obtida.

Aplique a mesma propiedade aos erros. Unha WebException pode levar unha resposta que o seu código inspecciona; péchea tras inspeccionala. Un fallo de transporte pode non ter resposta algunha.

A liberación devolve os recursos da resposta pero non promete conexións reutilizables en todos os casos. O protocolo, o servidor e o consumo do corpo seguen importando.

Isto concirne o mantemento da pila WebRequest antiga. No código máis recente siga a propiedade de resposta/fluxo do cliente real; para HttpClient, manteña as respostas dentro do seu ámbito de liberación, e distinga este fallo de limpeza da autenticación do proxy ou da selección de ruta.

Artigos relacionados