.net - Programmet hænger ved den tredje iteration (HTTPWebRequest) C #

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg står i øjeblikket over for et mærkeligt problem. Jeg tester hjemmesidernes reaktionstider, men når metoden sløjes på tredje gang (af timing af forbindelsen) hænger det:


internal class Program
{

        Console.ReadLine();

        loop();
    }
}


Udgangen, før den hænger, er: 'HTTP Response Timer', så jeg antager, at der er noget at gøre med den løbende instans.

Bedste reference


Du skal lukke svaret. Ellers når du maksimalt åbne forbindelser.


Brug en brugsfortegnelse, dette er den mest enkle måde at lukke og afhjælpe svaret på:


using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()){

   // .. here some action if any
}

Andre referencer 1


Du er ikke bortfaldet af svaret, hvilket betyder at den hænger på forbindelsen fra de tidligere anmodninger. Den nye anmodning venter derefter på at få den forbindelse fra poolen og blokkerer, fordi det gamle svar stadig 'ejer' forbindelsen. Skift bare din kode til:


// You weren't really using the HttpWebResponse class anyway, so why cast?
using (var response = request.GetResponse())
{
}


Har du virkelig betyde at rekruttere dog? Hvorfor går du ikke i gang med at bruge:


while(true)
{
    GetResponse();
}


eller noget i den stil?