我是经典ASP的新手,我需要用经典asp编写Web应用程序,因为客户希望它使用经典asp。 :(
无论如何!这是我的问题:
当我有一个名为person的类的对象时:
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
到现在为止还挺好...
在下一个请求时,我尝试读取 session var,例如:
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
关于将会发生什么的任何想法都会有很大的帮助。
最佳答案
我无法解释为什么您的代码无法正常工作。
该对象是在脚本上下文中创建的,该脚本上下文在请求完成后随后被拆除。因此,尽管类型名称可用,但对象的功能却被破坏了。
我可以告诉您,即使不是在脚本中创建的对象,在Session中存储对象也不是一个好主意。
ASP中使用的大多数对象都存在于单个线程中。一旦创建,只有创建对象的线程可以访问该对象。为了解决此问题,将对象存储在 session 中后,ASP会将 session 与创建该对象的特定工作线程关联起来。
当对该 session 的后续请求到达时,现在必须由其特定的工作线程处理。如果该线程正忙于处理其他请求,则即使有很多其他可用的工作线程, session 请求也会排队。
总体效果是破坏了应用程序的可伸缩性,在该可伸缩性中,工作负载可能会在工作线程之间不均匀地分布。
关于session - session 对象中的经典ASP Store对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1196525/