2008-12-12 1 views

Répondre

6

La réponse à votre première question est Oui - si des sessions sont utilisées, et Les deux. Un cookie est un court texte transmis entre le client et le serveur à chaque requête/réponse. IIS génère un ID de session, l'enregistre, ainsi que toutes les données associées, et transmet le cookie au client (navigateur). Lorsque le client fait une autre demande, il envoie le cookie contenant le sessionID au serveur. Le serveur peut alors regarder le cookie et trouver la session (et les données associées) qui est sauvegardée sur le serveur.

+0

Y at-il un lien quelque part sur le web qui peut me donner plus d'informations? Je veux comprendre comment le cookie est transféré entre le client et le serveur. – MOZILLA

+1

Les cookies sont envoyés dans les en-têtes des requêtes HTTP. http://fr.wikipedia.org/wiki/HTTP_cookie –

2

Dans ASP.net, il existe plusieurs emplacements pour la session à enregistrer, mais toujours dans l'infrastructure du serveur.

La valeur par défaut est la mémoire du processus IIS. Cela signifie que si vous réinitialisez IIS (ou l'ensemble du PC) ou même simplement le pool d'applications dans IIS, toutes les sessions sont supprimées et les données de session sont définitivement perdues. De plus, si vous avez BEAUCOUP de sessions et stockez beaucoup de données dans chaque session, le processus nécessitera beaucoup de mémoire, ce qui peut poser problème. C'est ce qu'on appelle des sessions "In-Proc".

L'alternative principale est une base de données SQL Server. De cette façon, les sessions sont conservées même après un redémarrage et peu importe la taille de chaque session. Le principal inconvénient est la latence ajoutée: Récupérer des données à partir d'une base de données est plus lent que la solution In-Proc bien sûr.

Il existe également d'autres méthodes pour stocker des sessions (y compris l'option d'écriture d'un fournisseur de session entièrement nouveau), mais les deux plus courantes sont "La mémoire du serveur" et "Une base de données MS SQL".