J'ai une application implémentée en tant que filtre ISAPI dont le comportement doit changer selon qu'elle est en cours de chargement par ISA ou IIS. Pendant GetFilterVersion, il doit s'enregistrer pour SF_NOTIFY_SEND_RAW_DATA s'il est chargé par ISA ou SF_NOTIFY_SEND_RESPONSE s'il est chargé par IIS.Comment un filtre ISAPI peut-il distinguer entre le chargement par IIS ou ISA?
Il ne semble pas y avoir d'informations sur le serveur transmis à GetFilterVersion. Y a-t-il des astuces qui pourraient identifier et distinguer entre IIS et ISA?
[modifier]
L'application a besoin de savoir quel serveur se charge au moment de l'initialisation, pendant l'appel GetFilterVersion. Il n'y a pas de requête en cours, donc tenter d'obtenir SERVER_VARIABLE à partir de variables d'en-tête ne fonctionnera pas; il n'y a pas de variables d'en-tête à ce stade.
Pour élaborer, mon application définit les en-têtes de réponse, tels que les cookies et les en-têtes de contrôle de cache. Lors de l'exécution dans le contexte d'un serveur ISA, il doit utiliser l'événement SF_NOTIFY_SEND_RAW_DATA pour effectuer cette opération, en modifiant les données brutes envoyées par le proxy ISA. Dans IIS, toutefois, l'utilisation de cette notification s'accompagne d'une pénalité importante en termes de performances. L'application doit donc utiliser SF_NOTIFY_SEND_RESPONSE. SF_NOTIFY_SEND_RESPONSE ne fonctionnera pas avec ISA car cet événement n'est pas déclenché pour les réponses par proxy, mais uniquement pour les réponses provenant de l'ISA lui-même, telles que les pages d'erreur. Enfin, l'enregistrement des événements se produit une fois pendant GetFilterVersion() et ne peut pas être modifié une fois le filtre chargé. L'application doit donc savoir, lors de l'initialisation, quand elle décide d'enregistrer pour SF_NOTIFY_SEND_RESPONSE ou SF_NOTIFY_SEND_RAW_DATA, si elle est en cours de chargement par IIS ou ISA.
Merci!C'est le genre de chose que je pensais pouvoir exister, mais je ne me souviens pas assez de Windows API ou en savoir assez sur IIS/ISA pour trouver. – veefu