J'utilise asp.net mvc, C# et jquery. Mon site utilise largement ajax. Cela a conduit à un problème et je ne suis pas sûr de savoir comment le réparer (bien le réparer mieux que ma solution actuelle).Comment surmonteriez-vous ce problème? Jquery + ajax + serveur timeout
Scénario.
- Identifiants dans mon site - l'ensemble de cookies, le serveur a délai de 30 minutes
- utilisateur se éloigne pendant 30 minutes
- utilisateur revient et clique sur un mon ajax permis onglets jquery
- demande écrite adressée à serveur
- Le serveur ne redémarre pas l'utilisateur et renvoie-le à la page de connexion.
- étant donné qu'il s'agit d'une requête ajax, la redirection est restituée dans l'onglet. Il semble moche (une page entière rendue dans un onglet), l'utilisateur est probablement extrêmement confus à ce stade.
Problème
- En ce qui concerne le serveur et ajax est concerné la demande ajax est valide et la réponse de succès est renvoyé. Donc, je ne peux pas aller vérifier une erreur car la demande a réussi, mais pas les bonnes données qui reviennent.
Solution 1
- connexions utilisateur dans le site.
- Jquery demande ajax fait pour savoir les utilisateurs de délai d'attente délai
- est de 60 secondes à moins de délai d'attente du serveur
- Une fois temporisation javascript côté est touché. La boîte de dialogue Jquery arrive et leur indique que leur session a expiré et les force à être redirigés pour se connecter.
- Un utilisateur ne peut pas cliquer sur quoi que ce soit car la boîte de dialogue bloque cela. Si certains utilisateurs firebug ou quelque chose ils peuvent le supprimer, mais le délai d'expiration du serveur sera toujours effet et ils obtiendront la version laide (ne vous inquiétez pas alors).
- Si un utilisateur effectue une requête ajax, le délai du côté serveur est réinitialisé ainsi que celui du côté client.
Problèmes
L'utilisateur peut à pied et une autre personne pourrait venir le message de délai d'attente pourrait être en place, mais ils ont quand même pu avoir un potentiel de 45 secondes d'essayer de faire une nouvelle demande et réinitialiser le temps libre. C'est très bas et pas trop inquiet à ce sujet.
Parfois, j'ai observé qu'il est juste temps (le côté client) et je ne sais pas pourquoi. Je ne peux jamais recréer le problème (semble arriver à d'autres personnes mais pas quand je suis en train de tester). Donc je devine que quelque chose n'a pas frappé écrire ou quelque chose d'autre a mal tourné.
Donc le numéro 2 est vraiment la grande raison pour laquelle je voudrais trouver une autre solution.
Solution 2 (spéculation). Je pensais peut-être que si je peux faire mon propre entête de réponse ou quelque chose comme ça, si le serveur arrive à expiration, je peux envoyer une redirection 303 ou quelque chose de cette nature que je pourrais vérifier puis faire une redirection jquery.
Cependant, je ne sais pas où faire cela dans mon code C# ou si je peux faire quelque chose comme ça.
Je l'écris comme un commentaire, parce que ma solution est si simple que j'ai le sentiment que je n'ai pas compris la question. lorsque vous envoyez une réponse à partir du serveur inclure des informations (en json) est la session a expiré ou non. la partie client va le vérifier avant de mettre à div. if expired => rediriger vers la page de connexion – Andrey
Eh bien, le problème est qu'il n'atteint jamais la partie où mon json est envoyé. Comme si le délai d'attente du serveur, il ne continue pas et fait la méthode d'action, puis le bloque. Il le bloque avant qu'il ne passe dans la méthode. Donc je ne peux rien mettre là-bas. – chobo2