Salut à tous,

Sur un site web fait avec une DLL Isapi, et j'ai une procédure d'envoi de mail directement depuis le site. Et comme le traitement peut être relativement long, j'aimerais afficher une page qui se rafraichit au fur et à mesure de l'avancement des envois.

En résumé, voici la procédure d'envoi :
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
 
procedure TWBM.WBMenvoiAction(Sender: TObject; Request: TWebRequest;
  Response: TWebResponse; var Handled: Boolean);
begin
 
    // On procéde à un envoi de message pour chaque ligne du fichier CSV
    for lig:=0 to length(RecLigne)-1 do
    begin
 
        // Création de la page HTML avec le compteur de progression
        Genere_Page_Wait('Envoi des mails en cours : '+IntToStr(lig+1)+' / '+IntToStr(length(RecLigne)),True);
 
       // Envoi du message
      Envoi_Mail;
 
    end;
end;
et voici le code de la page wait.html qui est généré par la DLL

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
 
<HTML>
<HEAD>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
</HEAD>
<BODY>
<META HTTP-EQUIV="REFRESH" CONTENT="1; URL=http://fcsm.devoci.fr/wait.html">
<font face="arial">
<CENTER>
<BR><BR>
Envoi des mails en cours : 13 / 84
</CENTER>
</font>
</BODY>
</HTML>
Pour afficher cette page Wait, j'ai essayé tout un tas de formules différentes, et aucune ne fonctionne proprement.

J'ai essayé tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
    response.SendResponse;
    response.SendRedirect(VGL_Domaine+'/wait.html');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    Request.WriteString('<META HTTP-EQUIV="refresh" CONTENT="0; URL='+VGL_Domaine+'/wait.html">');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    response.Content:=VGL_Domaine+'/wait.html';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    Request.WriteString('Envoi des mails en cours : '+IntToStr(lig+1)+' / '+IntToStr(length(RecLigne))+'<BR>');
avant la boucle for, et dans la boucle for

J'ai même essayé de passer desTstrings dans des Streams.


La seule syntaxe qui fonctionne à peu près, c'est

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
response.SendRedirect(VGL_Domaine+'/wait.html');
avant la boucle for

Mais ce qui s'affiche au lancement, c'est

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
HTTP/1.1 302 Object Moved Connection: close Date: Thu, 21 Aug 2008 09:52:38 GMT Content-Length: 160 Content-Type: text/html Location: http://fcsm.devoci.fr/wait.html Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-Powered-By: ASP.NET 
Objet déplacé
Ce document peut être consulté ici
Ce qui d'une part est trés moche, et d'autre part oblige l'utilisateur à cliquer sur le lien pour voir le compteur s'afficher et se rafraichir tout seul.

Bref, je cherche un moyen propre d'afficher une page de progression pendant un traitement long coté serveur.

Merci pour voter aide.

Fred