2010-07-23 2 views
3

Dans un fichier .asp brut, tout contenu en dehors des tags <% %> est envoyé directement au tampon de sortie. De plus, une expression dans les étiquettes <%= %> est évaluée et envoyée au tampon de sortie.Sortie de la réponse de la redirection avec VBScript dans ASP classic

Je veux le rediriger afin que, dans un contexte que j'établis, le résultat de ces deux constructions soit envoyé à un tampon que je contrôle. Si possible, j'aimerais pouvoir le faire de manière dynamique, afin de pouvoir rediriger la sortie vers différents tampons lors de l'exécution.

Le problème est ouvert, principalement parce que je vais planifier ce que je construis autour de cette solution. Je pourrais utiliser n'importe quel moyen qui existe pour capturer cette sortie. La performance et la facilité d'utilisation ne sont pas des considérations majeures.

Ceci est une suite à this question, dans lequel j'essaie une solution possible qui s'avère ne pas fonctionner.

Répondre

1

En effet, vous essayez de réécrire le filtre ISAPI asp.dll. Si vous vouliez vraiment faire cela, vous pourriez essayer d'écrire une DLL enveloppe autour de l'asp.dll qui remplace sa fonction WriteClient. Ce ne sera pas simple et pose la question de ce que vous essayez d'accomplir.

Une solution beaucoup plus simple serait d'éviter d'utiliser <% %> tout à fait et au lieu assembler toute la page (ou la plus grande partie) dans le code afin que votre page est rien de plus que:

<html> 
<%=OutputHtml()%> 
</html> 

De cette façon, vous peut avoir un contrôle total sur ce qui est produit et quand.

-1

bien pour la <% =%> chose que vous pouvez écrire votre propre fonction:

function [=](val) 
    response.write val 
    ' do anything you want with val 
end function 

l'autre chose n'est pas possible, je pense. mais vous pouvez utiliser le <% =%> construire pour chaque sortie que vous souhaitez rediriger ...

+0

Ne fonctionne pas. = n'est pas un identifiant valide, et la notation de parenthèse ne fait rien pour transformer la syntaxe <%= %> en un appel à la fonction =. –

+0

ok désolé pour cela. vous devez utiliser <% [=] "teststring"%> pour l'appel. mhh qui ne vous aide pas beaucoup? – ulluoink

1

Ce n'est pas une vraie solution, mais il est le meilleur que je peux venir avec:

<% sub foo %> 
      <h1>Hello, World!</h1> 
    <% end sub %> 

Ensuite, le contenu du sous-marin peut être écrit dans la réponse si et quand ils sont nécessaires. Le sous peut être manipulé en utilisant GetRef. Cela va polluer l'espace de noms global avec des sous-marins; ils ne peuvent même pas être des méthodes puisque GetRef ne fonctionnera pas avec eux. (La première fois Je l'ai testé, je piétiné accidentellement sur une fonction existante.)

Je serais vraiment aiment améliorer cela, si cela est possible. J'apprécierais tout commentaire.

1

Je ne pense pas que vous pouvez le faire dans ASP. Vous pouvez essayer de créer un filtre ISAPI qui surveillera la réponse de certains espaces réservés que vous placez dans un espace différent de celui des espaces réservés.
Je ne sais pas exactement quel est votre objectif final, donc je ne sais pas si cela fonctionnerait pour vous.