Bonjour,
Nous avons développé une DLL ISAPI sous Delphi 6 SP2 et en utilisant WebSnap.
Dans l'évènement OnDestroy de mes TWebDataModule, j'ai une trace dans un fichier historique qui m'indique si le code que j'excuse se passe bien ou non.
Sur ma machine de développement sous Vista et avec IIS 6.0 je n'ai pas de souci de déchargement, lorsque j'arrête le serveur IIS je vois bien les traces de destruction de mes modules comme je le souhaite.
Or, il se trouve que le serveur de production est un Windows 2000 Serveur avec IIS 5.0. Le répertoire contenant mes DLL est configuré en mode d'isolation Moyenne (mais j'ai essayé en Elevée et Basse et le problème est le même). Lorsque je clique dans l'utilitaire d'IIS pour décharger mes DLL, cela se passe bien, par contre comme je n'ai aucune trace dans mes historiques m'indiquant la destruction de mes modules, j'ai l'impression que tout ne se décharge pas correctement.
Idem si j'arrête complètement le serveur IIS, aucune trace du OnDestroy dans mon historique.
J'ai déjà ajouté dans le .dpr de ma DLL le code suivant permettant de régler un problème de déchargement, mais seulement sur ma machine de dév :
Je ne sais pas s'il s'agit d'un problème d'IIS ou de Delphi, mais c'est pour savoir si certains d'entre vous ont déja eu ce problème et ont réussi à le résoudre.
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 DLLHandler(Reason: Integer); var P: procedure; begin if Reason = DLL_PROCESS_DETACH then begin while ExitProc <> nil do begin @P := ExitProc; ExitProc := nil; P; end; end; end; begin DllProc := DLLHandler;
En espérant avoir posté sur le bon forum (j'ai hésité avec celui concernant IIS).
Partager