2009-07-10 4 views
6

Je sais que c'est une question simple, mais je n'arrive pas à la faire glisser hors du bruit de Google. Je sais que .NET peut utiliser un service d'état de session ou une base de données SQL pour sauvegarder son état de session, mais je ne sais pas si ASP propose des options hors processus pour le stocker. En at-il, ou suis-je bloqué avec la perte de variables de session sur les applications ASP lorsqu'un serveur à charge équilibrée est mis hors ligne?Est-ce que le processus in-process est la seule façon dont ASP classique peut stocker l'état de la session?

Répondre

4

Oui, seulement dans la mémoire

De MSDN Full Article

ASP mise en œuvre

La session ASP native peut uniquement les données de session de stocker en mémoire. Pour stocker les données de session sur SQL Server, un objet COM Microsoft® Visual Basic® 6.0 personnalisé est écrit pour gérer l'état de session au lieu d'utiliser l'objet de session natif. Cet objet COM sera instancié au début de chaque requête Web et recharger les données de session à partir de SQL Server. Lorsque le script ASP est terminé, cet objet sera terminé et l'état de la session sera conservé à SQL Server. Le but principal de l'objet Session COM Visual Basic 6 est de fournir un accès aux objets intrinsèques de Microsoft® Internet Information Server. L'objet Session COM Visual Basic 6.0 utilise la classe mySession d'assembly SessionUtility pour contenir l'état de session et la classe SessionPersistence de SessionUtility pour charger et enregistrer des données de session avec SQL Server. Les classes mySession et SessionPersistence sont exposées en tant qu'objets COM à l'aide de l'utilitaire regasm.exe. L'utilitaire regasm.exe peut s'enregistrer et créer une bibliothèque de types pour que le client COM utilise des classes Framework. Les informations sur l'état de la session sont rechargées pendant la construction de l'objet

Le constructeur (class_initialize) récupère d'abord le cookie de session, le timeout de session (SessionTimeOut) et la chaîne de connexion à la base de données (SessionDSN) de l'objet Application et crée une instance de la classe mySession pour contenir les données de session. Ensuite, le constructeur essayera de recharger les données de session à partir de SQL Server avec le cookie donné. Si le serveur SQL n'a pas les informations de session ou si la session a expiré, un nouveau cookie sera émis. Si le serveur SQL renvoie avec les données d'état de session, l'état de session sera stocké dans l'objet mySession.

+0

Excellente trouvaille, merci beaucoup! – Chris

+0

Vous ne savez pas pourquoi l'objet COM doit être écrit dans Visual Basic 6.0, il peut s'agir de toute langue tant que le résultat est un objet COM qui peut être appelé par un langage de script utilisé dans ASP. – AnthonyWJones

4

Rien d'autre n'est intégré, même si dans ASP Classic, il est assez facile de créer votre propre système de gestion de session. forme la plus simple étant une table dans une base comme ce qui suit:

SessionID int PK, champs de texte, texte Valeurs, Expires DateTime

Venez avec une sorte de codeur CSV/décodeur pour les champs et les valeurs et remplir une collection sur chaque page. Puis enregistrez-le une fois la page exécutée et mettez à jour l'heure d'expiration. Ensuite, demandez à un cookie de suivre l'ID de session ou de le transmettre dans la chaîne de requête.

Questions connexes