Libere as respostas de HttpWebRequest entre solicitudes de proxy
Dea ás respostas antigas de HttpWebRequest unha vida útil clara para que as solicitudes de proxy repetidas non retención recursos de conexión indefinidamente.
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.