0

J'ai un module de réécriture personnalisé et lorsque des paramètres de chaîne de requête spécifiques sont passés, je dois pouvoir appeler un serveur.transfert et non une réponse.redirect dû au logiciel adserve et au suiviL'événement de cycle de vie de l'application n'est pas déclenché lorsque Server.Transfer

dans l'événement Init du RewriteModule i enregistrer les événements:

BeginRequest PreRequestHandlerExecute ReleaseRequestState

lorsqu'un Response.Redirect est appelé l'événement ReleaseRequestState est en fait appelé et le module de réécriture est compl Cañete et la nouvelle série URL de contrôle sont

lorsqu'un Server.Transfer est appelée alors l'événement ReleaseRequestState est pas appelé et l'URL amicale ne sont pas définies

je pense que je comprends la différence entre un serveur et Response.Redirect .Transfer mais je n'arrive pas à comprendre pourquoi l'événement n'est pas appelé - est-ce que l'événement Session.End ou Session.Abandon est appelé et que l'événement n'est jamais déclenché? ou est quelque chose de complètement différent qui se passe ici

merci

paul

Répondre

0

Je suppose que ce sont les différences subtiles entre les deux. Response.Redirect effectue une redirection côté client, ce qui signifie que le navigateur client reçoit un message lui demandant de demander une URL différente et donc de vous envoyer une nouvelle demande.

Server.Transfer ne crée pas de nouvelle demande (http://msdn.microsoft.com/en-us/library/y4k58xk7.aspx). Il arrête simplement de travailler sur la page en cours et commence à travailler sur une autre page - pas de nouvelle demande.

+0

Salut merci de me revenir - s'il n'y a pas de nouvelle demande alors sûrement continuerait à appeler le PostReleaseState même après avoir tué la requête? – stack72

+0

On dirait qu'il devrait. À moins qu'il y ait de la magie à l'intérieur du pipeline pour savoir si l'État a été acquis. Si aucun état n'a été acquis (comme pour une requête .css), le framework n'appelle peut-être pas le ReleaseRequestState. Juste conjecture cependant - je ne sais pas cela pour un fait. – PatrickSteele