web-dev-qa-db-fra.com

Comment augmenter le délai d'expiration de session dans Asp .Net MVC 5?

Déconnexion de l'application automatiquement en quelques secondes, je veux l'augmenter à 30 minutes.

J'ai fait du code dans le fichier web.config mais cela ne fonctionne pas. J'ai étudié de nombreux articles à ce sujet mais je ne pouvais pas le résoudre.

Code Web.config:

<sessionState mode="InProc" timeout="1800"></sessionState>
    <authentication mode="Forms">
      <forms loginUrl="~/Login" timeout="1800">
      </forms>
    </authentication>
4
Manish Tiwari

Les délais d'expiration de l'état de la session et de l'authentification sont exprimés en minutes et non en secondes. Donc, vous devriez avoir

<sessionState mode="inProc" timeout="30" ></sessionState>
<authentication mode="Forms">
      <forms loginUrl="~/Login" timeout="30">
      </forms>
</authentication>

En outre, vous devez savoir que, de la manière dont cela est configuré, l'authentification expirera 30 minutes après son autorisation, tandis que la session prolongera les 30 minutes précédant le dernier accès. Pour rapprocher ces deux éléments de la synchronisation, vous devez ajouter glissementExpiration = "True" à l'élément de formulaire.

Si, après ces changements, il vous déconnecte toujours après quelques secondes, regardez:

  1. Le cookie est-il en train d'être créé sur le site? Son nom sera .ASPXAUTH et il devrait s'agir d'un cookie de session.
  2. Fermez-vous le navigateur lorsque le délai est écoulé?
  3. Avez-vous plusieurs applications utilisant la même méthode d'authentification?
4
Jeff Siver

Un autre endroit que vous pouvez définir est dans votre fichier Global.asax. Si la sessionState ne fonctionne pas dans votre fichier web.config, je vous suggère d'y jeter un coup d'œil. Apparemment, le fichier Global.asax va / écrasera le fichier web.config. Il peut être réglé comme ceci:

Session.Timeout = 30;//Timeout expects an integer representing minutes
0
Drew Kennedy