Question

Essentiellement, je veux être en mesure d'attraper lorsqu'un utilisateur permet de leur délai de session, puis clique sur quelque chose qui finit par causer un postback Async. Je me suis dit que si je mets ce code dans mon Session_Start (en Global.asax) alors je peux attraper un postback qui a eu lieu pendant un délai d'attente de session:

    With HttpContext.Current
        If TypeOf .Handler Is Page Then
            Dim page As Page = CType(.Handler, Page)
            If page IsNot Nothing AndAlso page.IsPostBack Then
                'Session timeout
            End If
        End If
    End With

Cela fonctionne très bien. Ma question est, je voudrais être en mesure d'injecter un peu de javascript dans la réponse et ensuite appeler Response.End () pour que le reste de l'application ne se termine pas d'exécution. Le problème est que lorsque je tente Response.Write("<script ... ") suivie Response.End() alors javascript ne s'écrit pas au flux de réponse. Je suis sûr qu'il ya d'autres endroits dans l'application que je peux en toute sécurité écrire Javascript pour la réponse, mais je ne peux pas laisser le reste de l'application exécuter car elle l'erreur quand il tente d'accéder aux objets de la session.

Pour résumer: je dois injecter javascript dans la réponse en cas Session_Start dans Global.asax

Remarque: Vous demandez peut-être pourquoi je ne fais pas ça dans Session_End ... nous ne l'utilisons des séances InProc et ainsi Session_End ne soit pas appelé ... mais c'est à côté du point ... voulions juste préciser pourquoi je fais cela dans Session_Start.

Était-ce utile?

La solution

L'écriture du flux de réponse en dehors d'un HttpHandler est généralement pas une bonne idée; il peut fonctionner dans certains cas, d'angle, mais pas comment les choses sont censées fonctionner.

Avez-vous envisagé d'utiliser soit une classe de base Page ou un adaptateur de page pour ce faire? De cette façon, vous auriez besoin d'un seul exemplaire du code, et il pourrait être appliqué à toutes les pages ou seulement celles que vous sélectionnez.

Une autre option serait d'utiliser la réécriture d'URL pour rediriger la requête entrante vers une page qui génère la sortie de script dont vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top