2016-01-21 1 views
0

J'ai un problème très étrange, peu importe ce que je fais, je ne pouvais pas arrêter la sortie de la page. Voici le scénario Nous avons quelques pages avec beaucoup de données, le client sélectionne des cases à cocher, sélectionne des valeurs dans divers menus déroulants, etc. Parfois, les clients passent plus de 30 minutes à sélectionner/définir des valeurs. Quand ils cliquent sur Soumettre les délais d'attente de la page et les emmène à la page de connexion. Lorsque vous vous reconnectez dans toutes les valeurs définies, cela aurait disparu. Très frustrant. On pourrait penser que sélectionner des listes déroulantes, entrer des données dans des boîtes de texte, etc. serait considéré comme faisant une activité sur la page qui devrait maintenir la session en vie. Mais cela ne semble pas être le cas. J'ai essayé d'augmenter la valeur du délai sans succès.ASP.net Page session timeout ne fonctionne pas

Voici le code de web.config

<authentication mode="Forms"> 
     <forms loginUrl="~/public/Login.aspx" slidingExpiration="true" timeout="200" protection="All" name="SampleApp"/> 
    </authentication> 
    <sessionState mode="InProc" cookieless="false" timeout="200"/> 
    <httpRuntime maxRequestLength="204800" executionTimeout="3600" /> 

Nous avons aussi la configuration tag machinekey avec les clés de chiffrement.

Appréciez toute aide. Merci d'avance.

+0

avez-vous un serveur distribué? – DinoMyte

+0

Si un utilisateur risque de perdre 30 minutes de travail, vous devriez peut-être constamment l'enregistrer en arrière-plan. Soit au serveur via AJAX ou peut-être simplement en utilisant HTML5 localStorage. – mason

+0

Avez-vous essayé d'étendre le délai via IIS? Voir ici: http://forums.asp.net/t/1283350.aspx?How+to+increase+session+timeout+to+8+to+9hrs+ – Khazratbek

Répondre

1

Dans ASP.Net, toute activité côté client qui n'implique pas la publication/l'envoi de données au serveur Web n'a aucun effet sur l'expiration des délais d'expiration glissants de l'authentification par formulaires. Ainsi, si vos utilisateurs sélectionnent simplement des valeurs dans la liste déroulante sans les afficher et ne font pas défiler la page big, cela ne prolongera pas le délai d'attente. Cependant, en cas de problème, vous pouvez écrire une méthode de service Web asmx vide qui ne fait rien et renvoie un message nul. Vous devez ensuite l'appeler à partir du code JavaScript de votre page toutes les 5 minutes en utilisant un temporisateur d'intervalle JavaScript, c'est-à-dire setInterval. Cet appel enverra une requête au serveur Web et vos utilisateurs ne seront pas expirés comme cela se passe actuellement. En outre, cet appel sera si léger et rapide que vos utilisateurs ne le sauront jamais.

0

Augmentation du délai d'attente des cookies dans la classe FormsAuthenticationTicket et disparition du problème. Merci à tous