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 :

"Terminer" correctement une appli ISAPI


Sujet :

Web & réseau Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 16
    Points
    16
    Par défaut "Terminer" correctement une appli ISAPI
    Bonjour les delphinautes,

    j'ai un problème existentiel.
    Je dois trouver un moyen de faire l'équivalent d'un "application.terminate" d'une dll ISAPI en delphi.

    juste pour info, meme si les raisons pour lesquelles j'ai besoin de faire ca, ne sont pas le sujet de ce fil :
    * La DLL tourne sous IIS.
    * Je ne peux me permettre de faire ca via un arret/relance de IIS ou du pool d'applis car d'autres applis tournent dans ce pool, et je n'ai pas le droit (norme idiote de ma boite) de faire un pool par appli (sinon je ne poserai pas la question).
    * les équipes qui devront faire l'arret de l'appli, n'auront pas forcément acces au serveur IIS;

    pour l'instant, voila ce qui est fait :
    mon code affiche un form HTML, avec un bouton "quitter" ou equivalent, et je recupere en post le fait que je dois "killer l'app".
    j'ai essay avec halt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    Response.Content := '<HTML><HEAD></HEAD><BODY>';
    ...
      Response.content := Response.content + '<form name="form1" method="post"><input type="submit"  name="quitter" value="quitter"></form>';
    ....
    if Request.ContentFields.Values['quitter']<>''
        then
          begin
            dllclass.log ('arret en cours');
            Response.content := Response.content + '<font color=red>arret en cours</font>';
            Response.Content := Response.Content + '</BODY></HTML>';
            sleep(5000); // 
            halt(5);
          end;
    ca marchote pas tout mal , c'est à dire que :
    - je peux cliquer mon bouton "quitter"
    - ca passe bien mes parametres en post.
    - je vois dans ma log ue je suis bien rentré dans ma condition et que j'ai ecrit 'arret en cours'
    - l'appli s'arrete...

    Par contre :
    - lors du rechargement de la DLL, mon affichage met 3H a se recharger puis affiche une page vide.
    - je ne vois jamais la ligne rouge "arret en cours" comme si le "halt" se faisait avant l'affichage de ma page.

    Questions :
    Puis je utiliser quelque chose de plus propre que "halt" ? (un equivalent d'un application.terminate pour ISAPI ?)
    Comment faire pour afficher mon code HTML avant que le halt ne se produise ? afin que l'utilisateur sache que son action a été prise en compte.


    Merci a vous.

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Bon, pour une isapi, le HALT semble etre la seule solution.
    pour le probleme d'affichage du HTML, ca ne semble pas possible.
    le response.content est poussé à la fin de la méthode, juste apres le 'end'.

    J'ai triché, en mettant dans le code de la page appelante un javascript qui modifie le code HTML de la page lors du "onsubmit" du formulaire.
    Du coup, le HTML est modifié avec les infos que je veux, ca affiche que l'appli va se fermer, et ensuite IE mouline quand la dll se ferme coté serveur.

    c'est pas exactement ce que je voulais mais ca contourne mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connexion Oracle en ADO avec une appli Isapi
    Par skywaukers dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2007, 22h54

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