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

Web & réseau Delphi Discussion :

Problème reset POST envoyé incomplet


Sujet :

Web & réseau Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut Problème reset POST envoyé incomplet
    Bonjour,
    J'ai un probème auquel je suis confronté depuis 15 jours sans trouver...

    J'ai une DLL ISAPI delphi 7 (tournant sous IIS 6.0 sous Windows 2003) qui reçoit des requettes XML en Post et y répond
    mais de temps en temps sans savoir pourquoi le POST n'arrive pas jusqu'au bout et les données reçues sont tronquées (j'ai analysé avec des outils de capture de trame type Wireshark, observer ou Sniffer pro) et je constate que le xml renvoyé est coupé brutalement et suivi d'un RST (reset de la connexion)
    ceci de façon totalement aléatoire (pour un même xml, une fois il est posté complètement, et une fois non).

    Jai éliminé les causes réseaux puisque je reproduit le problème meme en postant et en recevant sur la meme machine (url localhost)

    reste pour moi 2 causes possibles :
    Coupé par IIS ou coupé par ma DLL ISAPI Delphi
    concernant mon code delphi j'ai tout essayé et je ne voit pas ....y a t-il un bug Codgear connu sur le post du Twebresponse ?...
    y a t-il des experts capables de me répondre ?

    d'avance merci...

    voici un extrait de code delphi avec lequel je reproduit le problème :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TWM_monwebmodule.WebModule1DefaultAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    //action chargé de traiter les receptions de requetes POST
    ...
            //pour tester j'ai 60 sec apres reception d'unre requete pour deposer un fichier xml manuellement dans   un repertoire qui sera envoyé par retour post
        if Request.MethodType in [mtPost] then
            for i:=1 to 60 do begin
              if not(fileexists('c:\aenvoyer\reponse_post.xml')) then
               sleep(1000)
              else begin
               sleep(1000);
               lstdebug:=tstringlist.create;
               lstdebug.LoadFromFile('c:\sinweb\aenvoyer\reponse_post.xml');
               response.Content:=lstdebug.Text;
    //j'ai aussi essayé avec response.sendesponse puis request.writestring, en utilisant un stream en modifiant handled...sans succès
               resultat:= response.sent // toujours=true que ça se passe mal ou bien !?
               break;
              end;
             end;//for

  2. #2
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    pour ceux que mon problème interesse...j'ai contacté le support Godegear qui ...sans pour le moment avoir une correction ...a trouvé l'origine du problème ..il y a bien un bug dans les compilateur Dephi a ce niveau :

    je site la réponse Codegear:
    "
    Hello

    I understand what the problem is - as with the request, the response can handle 48K of data. Unfortunately the solution is not as simple as it was with the request.

    We ship an ISAPI dll top handle the Web connection for our DataSnap (Midas) technology. The project is C:\Program Files\Borland\Delphi7\Source\Vcl\HttpSrvr.DPR. In HTTPIntr.pas, you will find code that looks to be able to send more than 48K. In fact, for requests it uses the ReadClient method, which can be another way to get around the 48K limit for requests. I started to look at this but the code is not easy to follow and with the other support cases that I have had to look at, I have not had the time to devote to this case.

    Regards "

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut Flux XML de réponses tronqués
    Bonjour,
    Attention dans la réponse CodeGear, ils ne parlent pas d'éventuelles anomalies dans la vcl...

    Si j'ai bien compris la demande, c'est le fichier "c:\sinweb\aenvoyer\reponse_post.xml" qui est tronqué en sortie.
    J'ai eu à gérer la même problématique: mon application est une dll ISAPI qui fait office de web-service XML REST (on appelle en GET, Delphi génère une chaine XML de réponse). Cette dll doit tenir la charge (50 appels/s 24h/24) et retourne des flux qui peuvent atteindre 3Mo.
    Conclusion: c'est possible (aujourd'hui ca tourne sans anomalies... après stabilisation, chasse aux fuites mémoires et optimisations multi-thread !)

    Le flux retourné est fabriqué dans un buffer en mémoire (évite l'utilisation des strings qui dégradenet énormément les performances en multi-thread): donc on remplit un tableau de caractère (il y a un excellent tutoriel ici: http://reisubar.developpez.com/tutor...trings-pchars/ )
    Ensuite il suffit de faire pointer Response.content vers la première case de ton tableau.
    En effet ton problème peut venir de la gestion des TStringList (déjà dans le code proposé, la TStringList n'est pas détruite, en ISAPI c'est fatal ). Nous avons constaté pas mal d'anomalies de flux tronqués (sans erreurs remontées) en utilisant ce composant, en particulier en lecture de fichier (en plus particulier encore via chemins réseau), et en utilisant la méthode TStringList.text

    La modification peut être lourde suivant les traitements que tu effectues, mais cette méthode te permettra en plus d'optimiser tes temps de réponses.

    Bon courage

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/03/2006, 10h46
  2. Problème Methode POST
    Par nguthans dans le forum Langage
    Réponses: 3
    Dernier message: 13/01/2006, 20h28
  3. [ImageMagick] Header envoyé lors de la création d'une image
    Par KLiFF dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/10/2005, 16h35
  4. Problème methode POST
    Par raptor70 dans le forum Langage
    Réponses: 18
    Dernier message: 24/10/2005, 10h57
  5. [HTTPS] Problème de Post et Get avec Apache et SSL
    Par bartrik dans le forum Apache
    Réponses: 5
    Dernier message: 17/09/2004, 08h37

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