IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

HttpWebRequest et KeepAlive


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Par défaut HttpWebRequest et KeepAlive
    Bonjour,

    En fait, j'ai un souci lors de l'utilisation de HttpWebRequest et sa propriété KeepAlive. En fait, je fais une succession d'appel via HttpWebRequest, à chaque fois avec KeepAlive = true.

    Lors du premier appel, les headers du Request sont corrects :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GET /mapage.php HTTP/1.1
    Referer: http://www.monsite.com/
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/x-silverlight-2-b2, */*
    Accept-Language: fr
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)
    UA-CPU: x86
    Host: www.monsite.com
    Connection: Keep-Alive
    En réponse, le serveur me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    HTTP/1.1 200 OK
    Date: Tue, 29 Jul 2008 16:17:34 GMT
    Server: Apache/2.0.63 (Unix) PHP/5.2.5
    X-Powered-By: PHP/5.2.5
    Keep-Alive: timeout=1, max=100
    Connection: Keep-Alive
    Transfer-Encoding: chunked
    Content-Type: text/html
    Mais lors de l'appel à la page suivante, bien que KeepAlive est encore mis à true, les headers de mon Request deviennent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    POST /mapage2.php HTTP/1.1
    Referer: http://www.monsite.com/
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/x-silverlight-2-b2, */*
    Accept-Language: fr
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)
    UA-CPU: x86
    Content-Type: application/x-www-form-urlencoded
    Host: www.monsite.com
    Content-Length: 36
    Expect: 100-continue
    Donc, ma question : pourquoi, bien que j'indique un KeepAlive = true, la chaîne "Connection: Keep-Alive" n'est pas ajouté dans les headers envoyés au serveur lors du second appel (et tous les suivants) ? Est-ce que la réponse précédente du serveur peut intervenir sur la connection ouverte car je n'ai pas ce souci sur d'autres serveurs ?

    Merci d'avance de votre aide.
    Fran

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    As tu trouvé une réponse à ta question? Pour ceux ayant des questions similaires, voici la réponse:

    La propriété KeepAlive n'a pas rapport aux sessions, c'est tout simplement une façon d'obtenir une meilleur performance au niveau TCP pour éviter d'ouvrir une nouvelle request chaque fois. Pour répondre à ta question précisément, il est difficile de cibler ton problème. Une session doit être renouveler en redonnant l’id de la session par plusieurs moyens (dépendamment de l’implémentation) : cookies, champs cachés, etc…

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Par défaut
    Non, je n'ai malheureusement pas trouvé de solutions.

    J'ai bien compris que la session est conservée via les cookies.
    Pour cela, j'utilise un objet CookieContainer que j'utilise de page en page pour conserver toutes ces informations transmises par le serveur. Et j'ai bien vérifié tous les champs cachés utiles.

    En fait, ce qui m'a conduit à établir que le problème vient de l'entête "Connection: Keep-Alive", c'est que c'est la seule différence que j'ai entre une navigation classique avec IE7 et une navigation programmée en C#. L'erreur que j'obtiens en réponse à mon appel sans Keep-Alive est "La connexion sous-jacente a été fermée : Le serveur a fermé une connexion qui devait être maintenue active.".

Discussions similaires

  1. equivalent HttpWebRequest
    Par hiko-seijuro dans le forum C++
    Réponses: 6
    Dernier message: 09/05/2006, 19h35
  2. [C#] Problème avec HttpWebRequest
    Par Manralf dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/02/2006, 16h10
  3. Réponses: 5
    Dernier message: 23/01/2006, 15h32
  4. [C#] Problème accents avec HttpWebRequest
    Par aucean dans le forum C#
    Réponses: 2
    Dernier message: 03/12/2005, 14h40
  5. [C#] timeout HttpWebRequest
    Par Maximil ian dans le forum C#
    Réponses: 1
    Dernier message: 23/11/2005, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo