Session_End ne se déclenche pas?
Je veux signer un utilisateur lors de sa session expire. Tellement l'habitude de code suivant Mondiale.asax:
protected void Session_End(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
}
Mais semble session_end
se déclenche jamais. Une idée de comment résoudre ce problème? Je suis à l'aide d'ASP.NET avec les paramètres par défaut.
- Avez-vous vraiment attendre 20 minutes pour que l'événement de feu?
- certainement oui! J'ai aussi remplacé cette ligne avec ceci: "throw new Exception("");" mais ça ne fonctionne toujours pas.
- Comment peut garantir cela? Je sais que ma session vraiment expire au bout d'un moment précis. Il semble donc que c'est InProc
- Pour s'assurer de votre état de session en mode goto votre site web.le fichier de configuration et trouver une balise appelée SessionState. Il y aura un attribut nommé mode="" Si la valeur de l'attribut est-Proc, alors seulement, cet événement se déclenche. Pour tout autre événement ne se déclenche pas.
- Digue, @Fou: je n'ai pas une telle chose dans le web.config. Quelle est la valeur par défaut?
- Il serait par défaut basé sur votre machine.valeur de configuration. Doit être "Inproc" le plus probable. C'est généralement la valeur par défaut
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir certaines données de Session dans le Session_Start. Sans cela, Session_End ne sera pas déclenché.
voir cette
var sessionID = Session.SessionID
à l'intérieur de la fonction Session_Start a été suffisant pour obtenir Session_End à feu pour moi.Dans votre site web.config, vous devez avoir la sessionState de l'élément enfant de l'élément
Je ne sais pas si c'est une fonctionnalité ou un bug. Ou peut-être que je ne comprends pas assez de session, gestion de ASP.NET. Mais c'est ce que j'ai trouvé.
Session_End ne se déclenche pas dans ASP.NET MVC 4 (avec les paramètres par défaut pour l'élément sessionState dans le web.config) si la fonction Session_Start n'est pas déclaré.
De sorte que vous devez déclarer la fonction Session_Start pour attraper Session_End 🙂
Êtes-vous sûr qu'il n'est jamais déclenché ?
Ce que je comprends
Session_End
n'a rien à voir avec la demande actuelle parce que ASP.NET la session est arrêté par le délai d'attente APRÈS la dernière demande de la part du client est arrivé. L'appel àFormsAuthenticaion.SignOut
manipule les cookies d'authentification et, par conséquent, n'a pas d'effet sans la connectivité du client (navigateur).Prendre un coup d'oeil à cette question (qui a une réponse) - le problème est plus ou moins semblable à la vôtre, de sorte que vous pourriez trouver une bonne solution:
Session_End Mondiale.asax.cs pas de tir à l'aide de l'authentification par formulaires
Espère que cette aide.
Je ne sais pas comment sa fonctionne, mais il va se déclencher quand je ferme mon navigateur après la période de délai.
Appeler cela de