ASP.NET et Sessions - Nouvelle instance de navigateur versus nouvelle fenêtre de navigateur

StackOverflow https://stackoverflow.com/questions/303859

Question

J'espère que quelqu'un pourra clarifier ce comportement pour moi et expliquer comment ASP.NET décide à quel moment traiter quelque chose comme une nouvelle session.

A) Dans Internet Explorer, je charge le site ASP.NET en question. Il commence une nouvelle session.
B) Si je vais au menu Fichier - Nouvelle fenêtre ... il reste dans la même session.
C) Si je lance une nouvelle instance d'Internet Explorer et charge la même page, une nouvelle session démarre.

L'étape C m'embrouille. Je m'attends à ce qu'il s'agisse de la même session basée sur mon IP distante.
Que fait IIS / ASP.NET pour décider qu’il s’agit d’une nouvelle session? La nouvelle instance d’IE utilise-t-elle mon port distant? Lorsque vous ouvrez une nouvelle fenêtre avec Fichier - Nouveau, il utilise le même port distant que le parent.

Était-ce utile?

La solution

Les sessions dans IIS / ASP.NET sont basées sur des cookies avec une étendue de session, ce qui signifie qu’elles sont détruites lorsque le navigateur est fermé et qu’elles ne sont apparemment pas partagées par différents processus d’Internet Explorer.

Lorsque vous ouvrez une nouvelle fenêtre de navigateur avec Fichier > Nouvelle fenêtre, la fenêtre sera traitée selon le même processus que la première (c'est-à-dire le même iexplorer.exe). Lorsque vous lancez IE à partir du menu Démarrer, vous obtenez un nouveau processus. Vous avez maintenant deux iexplorer.exe dans le gestionnaire de tâches. Je pense que ce n’est que IE 7 qui engendrera de multiples processus.

Remarque: IE 8 aura un processus unique par onglet / fenêtre, à l’instar de Google Chrome. Je ne sais pas si ces navigateurs partagent des cookies de session entre les processus, mais il est certainement important de garder cela à l'esprit lorsque vous testez avec l'un de ces navigateurs.

Autres conseils

Par défaut, ASP.NET suit les sessions au moyen de cookies. Le cookie de session n'est pas enregistré dans une nouvelle instance IE, ce qui entraîne une nouvelle session. Cependant, en utilisant Fichier - > Une nouvelle fenêtre à partir d’une fenêtre IE existante créera une nouvelle fenêtre avec les mêmes cookies que le "parent", permettant à ASP.NET d’utiliser la session existante.

Je me demandais si la nouvelle instance IE aurait les mêmes cookies que ceux utilisés dans le cas B, où, même s’il s’agit d’une nouvelle fenêtre, il utilise le même processus. C’est généralement dans le cookie ou dans la chaîne de requête qu’une valeur est utilisée pour mapper les sessions sur différents clients.

Il semblerait que les données de la session soient mises en cache par processus. A) et B) existent dans le même processus, alors que le lancement d’une nouvelle instance d’IE créera un nouveau processus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top