J'ai essayé très dur mais je ne trouve pas de solution sur la façon de définir la valeur du délai d'expiration de session pour une session en cours pour une application Web ASP.Net.
J'utilise VSTS 2008 + .Net 3.5 + C #. Voici ce que j'ai écrit par moi-même pour définir le délai d'expiration à 1 minute, est-ce correct?
J'ai écrit dans la section system.web dans le web.config
<sessionState timeout="1" mode="InProc" />
Réponses:
Si vous souhaitez définir le délai d'expiration à 20 minutes, utilisez quelque chose comme ceci:
la source
La valeur que vous définissez dans l'
timeout
attribut est l'une des méthodes correctes pour définir la valeur du délai d'expiration de la session.L'
timeout
attribut spécifie le nombre de minutes pendant lesquelles une session peut être inactive avant d'être abandonnée. La valeur par défaut de cet attribut est 20.En attribuant une valeur de 1 à cet attribut, vous avez défini la session pour qu'elle soit abandonnée 1 minute après son inactivité.
Pour tester cela, créez une page aspx simple et écrivez ce code dans l'événement Page Load,
Ouvrez un navigateur et accédez à cette page. Un identifiant de session sera imprimé. Attendez une minute, puis appuyez sur Actualiser. L'identifiant de session va changer.
Maintenant, si ma supposition est correcte, vous voulez que vos utilisateurs se déconnectent dès que la session expire. Pour ce faire, vous pouvez créer une page de connexion qui vérifiera les informations d'identification de l'utilisateur et créer une variable de session comme celle-ci -
Maintenant, vous devrez effectuer une vérification sur chaque page pour cette variable comme ceci -
Ceci est un exemple simple de la façon dont cela fonctionnera.
Mais, pour sécuriser vos applications de qualité de production, utilisez les classes Roles & Membership fournies par ASP.NET. Ils fournissent une authentification basée sur les formulaires qui est beaucoup plus fiable que l'authentification normale basée sur la session que vous essayez d'utiliser.
la source
Si vous utilisez MVC, placez-le dans le fichier web.config dans le répertoire racine de l'application Web, et non dans web.config dans le répertoire Views. Il doit également être DANS le nœud system.web, pas sous comme George2 l'a déclaré dans sa question: "J'ai écrit sous la section system.web dans le web.config"
La valeur du paramètre timeout représente les minutes.
Il existe d'autres attributs qui peuvent être définis dans l'élément sessionState. Vous pouvez trouver des informations ici: docs.microsoft.com sessionState
Vous pouvez ensuite attraper le début d'une nouvelle session dans le fichier Global.asax en ajoutant la méthode suivante:
la source
Utilisez ceci dans
web.config
:la source
timeout
vraiment.stateConnectionString
etsqlConnectionString
sont ignorés quandmode="InProc"
, et les valeurs demode
etcookieless
sont définies sur leurs valeurs par défaut. Donc, cela se résume vraiment à la réponse de Wolfwyrd.Si cela ne fonctionne pas
web.config
, vous devez le définir depuis IIS.la source