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.
ca marchote pas tout mal , c'est à dire que :
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;
- 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.
Partager