Deuxième appel à HttpWebRequest.GetRequestStream() throws exception délai

Aider... je ne peux pas comprendre pourquoi HttpWebRequest.GetRequestStream() est en train de jeter un délai d'attente
exception... il est TOUJOURS présent lorsque l'on essaie d'établir le second (et les suivantes)
les connexions à l'aide de POST. En gros, je suis en train de créer la connexion
toutes les 30 secondes. Voici la corporation de code:

Ma Boucle Principale:

for( int i = 0; i < students.Count; i++ ) {

    Log( "Processing: " + students[i].DbID + ";" + students[i].Username + ";" + students[i].Password );

    UserConnection uc = new UserConnection( students[i] );
    uc.ParseAll();


    Log( "Done Processing: " + students[i].DbID + ";" + students[i].Username + ";" + students[i].Password );
}

De La Connexion De L'Utilisateur:

public UserConnection( Student student )
{
    this.student = student;

    this.cookies = new CookieContainer();
    this.InitCookies();

    this.courses = new List<Course>();
}


private void InitCookies()
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create( baseUri );
    req.Method = "GET";
    req.CookieContainer = this.cookies;

    req.GetResponse();


}

public void ParseAll()
{
    ParseCourseInfo(); //get info for each class
    .
    .
    .
}

private void ParseCourseInfo()
{
    HtmlDocument page = GetPage( "POST", homeUri, "username=" + student.Username + "&password=" + student.Password + "&testcookies=1" );
    .
    .
    .
}

L'exception suivante est présente dans GetPage:

29/07/2012 1:04:22 PM : Exception: System.Net.WebException
Message: The operation has timed out
Source: System
Stack Trace:    at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at URCoursesParserV2.UserConnection.GetPage(String method, Uri pageUri, String queryString) in UserConnection.cs:line 167

Ici est la GetPage code où le problème est:

private HtmlDocument GetPage( string method, Uri pageUri, String queryString = "" )
{
Stream data = null;
HttpWebResponse res = null;
HttpWebRequest req = null;
try {
req = (HttpWebRequest)WebRequest.Create( pageUri );
req.CookieContainer = this.cookies;
req.Timeout = 1000 * 10; //10 seconds - I've also tried leaving it as default
req.KeepAlive = false; ////I've also tried leaving it as true.
if( method.ToUpper() == "POST" ) {
req.Method = "POST";
if( queryString != "" ) {
byte[] postBytes = Encoding.UTF8.GetBytes( queryString );
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postBytes.Length;
using( data = req.GetRequestStream() ) { //////////////EXCEPTION HERE ON SECOND ITERATION
data.Write( postBytes, 0, postBytes.Length );
data.Close();
}
}
} else if( method.ToUpper() == "GET" ) {
req.Method = "GET";
if( queryString != "" ) {
pageUri = new Uri( pageUri.ToString() + '?' + queryString );
}
} else {
return null;
}
HtmlDocument page = null;
using( res = (HttpWebResponse)req.GetResponse() ) {
using( data = res.GetResponseStream() ) {
page = new HtmlDocument();
page.Load( data );
}
}
return page;
} catch(WebException e) {
URCoursesParser.Log( e );
return null;
} catch( Exception e ) {
URCoursesParser.Log( e );
return null;
} finally { ///data and res probably don't need to be checked here now because of 'using' blocks
if( data != null ) {
data.Close();
data = null;
}
if( res != null ) {
res.Close();
res = null;
}
if( req != null ) {
req.Abort();
req = null;
}
}
}

Des idées!?! La première itération est toujours beau. Si j'ai terminer le programme et redémarrez la première itération est de nouveau bien... C'est toujours le deuxième et les itérations suivantes.

OriginalL'auteur Cailen | 2012-07-29