délai d'attente de session sur l'appel ajax
Je sais que c'est en double mais je ne pouvais pas trouver de solution fiable(pour asp.net web).
Je veux juste rediriger vers la page de connexion si la session expire.
J'ai essayé suivantes:
1. à l'aide de jquery code d'état
$.ajax({
type: "POST",
url: "stream.asmx/SomeMethod",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//success msg
},
error: function (request, status, error) {
if (status = 403) {
location.href = 'login.aspx';
}
}
});
Problème: cela renvoie même code d'état(403) pour d'autres trop d'erreurs, dont je n'attends d'expiration de la session.
2. L'envoi de message json si la session a expiré
code derrière:
if (!object.Equals(HttpContext.Current.Session["User"], null))
{
Id = int.Parse(HttpContext.Current.Session["User"].ToString());
}
else
{
result = from row in dtscrab.AsEnumerable()
select new
{
redirectUrl = "login.aspx",
isRedirect = true
};
}
$.ajax succès:
success: function (msg) {
if (msg.d[0].isRedirect) {
window.location.href = msg.d[0].redirectUrl;
}
else {
//load containt
}
}
Problème: C'est en quelque sorte desn pas invoquer l'ajax succès de la ligne si la session n'expire(il ne retour correct json). Et même ce n'est pas une bonne façon si j'ai beaucoup de nombre de requête ajax dans la page(doit être gérée à l'échelle mondiale).
Cependant, j'ai vu ce post qui est vraiment bon soltion mais c'est pour mvc à l'aide de AuthorizeAttribute
: manutention-session-timeout-en-ajax-appels
Alors, Est-il que je peux utiliser le même concept utilisé dans mvc à l'aide de AuthorizeAttribute dans asp.net l'api web? Si non, comment je peux résoudre ces problème auquel je suis confronté (l'un des deux ci-dessus mentionné)?
source d'informationauteur Ashwini Verma | 2012-12-31
Vous devez vous connecter pour publier un commentaire.
Un code d'état 403 va provoquer jQuery pour appeler l'échec de la méthode. Garder le même code derrière à partir de votre deuxième essai, mais déplacer le rediriger gestionnaire à l'échec de la méthode plutôt que la réussite de la méthode. Dans le succès de la méthode, la traiter comme vous le feriez normalement.
Enfin, j'ai fini par la suite.
De manutention côté client
Problème:
J'ai eu le même problème dans mon Rasoir MVC de l'Application de lever des exceptions, tandis que les appels ajax faite lors de la session a expiré.
La façon dont j'ai réussi à obtenir ce problème est trié par le suivi de chacune des requêtes ajax à l'aide d'un simple poids léger de la Méthode d'Action (RASOIR MVC) retournant un booléen variable si la Demande est Authentifié ou non. Vous trouverez le code ci-dessous..
Mise en page/Page Maître /fichier de Script:
})
Ensuite dans la Maison Contrôleur/Serveur côté vous avez besoin d'une méthode pour vérifier la demande et retourner la variable booléenne..
Valider chaque requête ajax et si la session a obtenu expiré pour toute requête ajax, il alerte l'utilisateur avec un message et rediriger l'utilisateur vers la page de connexion.
Je vous suggère aussi de ne pas utiliser la norme d'Alerte d'Alerte. Utilisateur une certaine pointe de l'Outil type de mise en forme div Alertes. Standard JS Alertes peuvent forcer l'utilisateur à cliquer sur OK avant la redirection.
Espère que cela aide.. 🙂
Grâce,
Riyaz
vous pouvez définir le temps de session expirent hors d'avertissement de quelque chose comme ....
4xx sont HTTP codes d'état d'erreur et serait la cause de jquery pour exécuter la onFailure de rappel.
Aussi, méfiez-vous de l'aide 3xx pour les redirections lorsque vous souhaitez traiter la charge utile. Internet Explorer, dans mon expérience, juste une redirection (sans regarder à la charge utile) lorsqu'un 3xx code d'état est retourné.
Je dirais, de lancer une 403 et gérer la situation. Pour le client 403 implique l'accès aux ressources est interdite. Il peut y avoir plusieurs raisons, ce qui est normal je pense.