ASP classique de Stocker des objets dans l'objet session
Je suis nouveau classique de l'ASP et j'ai besoin de code d'une application web en asp classique parce que le client veut qu'il soit en asp classique. 🙁
De toute façon! voici ma question:
Quand j'ai un objet d'une classe nom de la personne:
Class Person
Private m_sFirstName
Public Property Get firstName
firstName = m_sFirstName
End Property
Public Property Let firstName(value)
m_sFirstName = value
End Property
End Class
set aPerson = new Person
Person.firstName = "Danny"
set Session("somePerson") = aPerson
So far So good...
Sur la demande suivante , j'essaie de lire de la session var comme :
If IsObject(Session("aPerson")) = true Then
set mySessionPerson = Session("aPerson")
Response.Write(TypeName(myTest)) //will output "Person"
Response.Write(mySessionPerson.firstName) //will output "Object doesn't support this property or method: 'mySessionPerson.firstName'
End If
Des idées sur ce qui se passe serait d'une grande aide.
OriginalL'auteur | 2009-07-28
Vous devez vous connecter pour publier un commentaire.
je ne peux pas expliquer pourquoi votre code ne fonctionne pas semble bien pour moi.L'objet est créé dans un contexte de script qui est par la suite démoli après que la demande est complète. Par conséquent, tandis que le nom du type est disponible, la fonction de l'objet est cassé.
Je peux vous dire que ce n'est pas une bonne idée de stocker des objets dans la Session, même ceux qui ne sont pas créés dans le script.
La plupart des objets utilisés dans ASP exister dans un seul thread. Une fois créé, seul le thread qui a créé l'objet peut accéder à l'objet. Pour faire face à cette une fois que vous avez stocké un objet à la session ASP affiliés de la session avec le thread qui a créé l'objet.
Lors d'une demande ultérieure de cette session arrive, il doit maintenant être manipulé par ses propres thread de travail. Si ce thread se trouve être occupé à travailler pour une autre demande de la séances de demande est mise en attente, même si il y a beaucoup d'autres threads disponibles.
L'effet global est d'endommager les applications de l'évolutivité où la charge de travail peut devenir inégalement répartie entre les threads.
OriginalL'auteur AnthonyWJones
Vous pouvez le faire, mais vous devez être un peu sournois. Ma compréhension de cela est lorsque vous stockez une maison objet Session est conserve toutes les données, mais perd toutes les fonctionnalités. Pour retrouver les fonctionnalités que vous avez de "re-hydrater" les données de la session.
Heres un exemple dans JScript pour l'ASP:
Son tout à fait une méthode puissante de la gestion de l'épargne de l'état dans la Session et peut facilement être swopped pour DB appels/XML etc. en cas de besoin.
Intéressant ce que Anthony soulève à propos de fils, d'en connaître la profondeur de la connaissance, je suis sûr de son bon et quelque chose à penser, mais si c'est un petit site, vous serez en mesure de sortir avec elle, nous avons utilisé ce sur un support de taille site (10K visiteurs par jour) pendant des années avec pas de réels problèmes.
OriginalL'auteur Pete Duncanson
Ne devrait-elle pas être
Désolé j'ai foiré dans l'exemple
ASP et le sessionobject porte pas la notion de "sérialisation".
OriginalL'auteur n8wrl
Je voudrais créer un objet COM qui ressemble à la classe Personne avec VB6. Puis le stocker. Le code est très similaire.
Pete méthode fonctionne probablement.
OriginalL'auteur ssorrrell
Ensemble des données de session comme ceci:
et obtenir ensuite comme ceci:
OriginalL'auteur Gal Mathys
Je suis trop paresseux pour le tester pour vous, mais
Au lieu de:
Essayer:
OriginalL'auteur Makkie