web-dev-qa-db-fra.com

Test de délai d'expiration de session ASP.NET

Je suis en train de tester un blackbox d'un site Web ASP.Net et j'ai besoin de tester différents scénarios de dépassement de délai de session. 

Je ne suis pas sûr qu'ils aient des délais d'attente de session entièrement encapsulés. Sinon, laissez-vous une page ouverte pendant 20 minutes, existe-t-il un moyen plus simple d'imposer un délai d'attente de session?

35
ctrlShiftBryan

Diminuer le délai d'attente

Le moyen le plus simple et le moins intrusif de tester cette méthode consiste probablement à simplement réduire le délai d’expiration à un nombre relativement réduit, par exemple 3 ou 5 minutes. De cette façon, vous pouvez faire une pause de quelques minutes pour simuler une pause plus longue sans vous soucier des redémarrages d’application ou de la réinitialisation du code spécial ayant une incidence sur vos résultats de test.

Vous pouvez modifier le délai d'expiration de l'état de la session dans quelques emplacements: globalement (dans le fichier web.config situé dans le dossier config de la version du framework .NET applicable) ou uniquement pour votre application.

Pour modifier le délai d'expiration uniquement pour votre application, vous pouvez ajouter les éléments suivants au fichier web.config de votre application:

  <system.web>
    <sessionState timeout="60" /> 
  ...

Alternativement, vous pouvez également modifier ce même paramètre pour votre application via une boîte de dialogue de configuration IIS (je pense cependant que vous avez toujours besoin de définir un fichier web.config pour votre application, sinon Edit Configuration sera désactivé).

Pour y accéder, cliquez avec le bouton droit de la souris sur votre application Web dans IIS et accédez à Propriétés | Onglet ASP.NET | Modifier la configuration | Onglet Gestion de l'état | Délai d'expiration de la session (minutes).

Notez que vous pouvez également manipuler ce paramètre via le code. Si cela est déjà fait, le paramètre du fichier web.config sera ignoré et vous devrez utiliser une autre technique.

Appelez Session.Abandon ()

Une technique légèrement plus intrusive que la définition d'un délai d'attente trop court consiste à appeler Session.Abandon (). Veillez toutefois à appeler cette page depuis une page distincte de votre application, car la session n'est pas terminée tant que toutes les commandes de script de la page en cours ne sont pas traitées.

Je crois comprendre que ce serait un moyen relativement simple de tester les délais d'attente de session sans les attendre réellement.

Forcer le redémarrage d'une application

Dans une configuration par défaut de l'état de session, vous pouvez simuler un délai d'expiration de session en supprimant complètement les sessions en provoquant le redémarrage de l'application. Cela peut être fait de plusieurs manières, dont certaines sont énumérées ci-dessous:

  • Recyclez le pool d'applications via
    • le composant logiciel enfichable IIS MMC
    • la ligne de commande (iisapp/a AppPoolID/r)
    • modifier web.config, global.asax ou une dll dans le répertoire bin
  • Redémarrez IIS via
    • le composant logiciel enfichable IIS MMC
    • services.msc et redémarrage du service d'administration IIS
    • la ligne de commande (iisreset)

Quand je parle de "configuration par défaut", je parle d'une application Web configurée pour utiliser le mode d'état de session "InProc". Il existe d'autres modes qui peuvent réellement conserver l'état de session même si l'application Web est redémarrée (StateServer, SQLServer, Custom).

Altération du mécanisme de suivi d'état

En supposant que votre application Web ne soit pas configurée avec un mode «sans cookie» (les cookies seront utilisés par défaut), vous pouvez supprimer le cookie contenant l'ID de session du navigateur client.

Toutefois, si j'ai bien compris, cela ne simule pas vraiment un délai d'expiration, car le serveur sera toujours au courant de la session, il ne verra tout simplement personne l'utiliser. La demande sans ID de session sera simplement traitée comme une demande invisible nécessitant une nouvelle session, ce qui peut être ou ne pas être ce que vous voulez tester.

71
J c

Ajoutez une page au site et appelez Session.Abandon ()

9
John Sheehan

Le moyen le plus simple serait d'ouvrir la page dans deux onglets différents et de vous déconnecter sous un autre onglet. La session expirant automatiquement dans le premier onglet expirerait automatiquement. Donc, je trouve cela très facile sans rien modifier dans web.config . De cette façon, vous pouvez tester même si une fonctionnalité particulière ne gère pas la redirection vers la connexion lorsque la session expire.

5
SkylimitRavindra

Faites un timeout plus court.

4
nportelli

Faites rebondir l'AppPool et la session sera perdue.

si vous n'avez pas d'accès direct IIS, vous pouvez ouvrir et enregistrer Web.Config pour faire la même chose (n'utilisez pas le bloc-notes, il bousille l'encodage).

4
FlySwat

Vous pouvez changer le délai dans votre webconfig

 <authentication mode="Forms">
      <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/>
 </authentication>
3

Si vous stockez les informations de votre session dans un cookie, vous pouvez essayer de les supprimer.

2
Petey

Recyclez le pool d'applications sur le serveur.

1
Chris Cudmore

J'utilise généralement le serveur d'état de session ASP .NET. Outre d’autres avantages pendant le développement, je peux simplement redémarrer le service d’état ASP .NET pour abandonner la session. Si vous utilisez le serveur d'état, exécutez simplement services.msc et redémarrez le "Service d'état ASP .NET".

0
Mehdi Maujood

Vous avez deux options: -

1- Réduisez le délai de session dans web.config . 2- Redémarrez IIS ou le pool d'applications.

0
Zeeshan Umar