5 session object-persistence asp-classic
我是经典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
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好...
在下一个请求中,我尝试读取会话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
Run Code Online (Sandbox Code Playgroud)
关于什么事情的任何想法都会有很大的帮助.
我无法解释为什么您的代码无法正常工作。
该对象是在脚本上下文中创建的,该脚本上下文在请求完成后随后被拆除。因此,虽然类型名称可用,但对象的功能已损坏。
我可以告诉您,即使不是在脚本中创建的对象,在Session中存储对象也不是一个好主意。
ASP中使用的大多数对象都存在于单个线程中。一旦创建,只有创建对象的线程可以访问该对象。为了解决此问题,将对象存储在会话中后,ASP会将会话与创建该对象的特定工作线程关联起来。
当对该会话的后续请求到达时,它现在必须由其特定的工作线程处理。如果该线程正忙于处理其他请求,则即使有很多其他可用的工作线程,会话请求也会排队。
总体效果是破坏了应用程序的可伸缩性,在该可伸缩性中,工作负载可能会在工作线程之间不均匀地分布。
难道不应该吗
If IsObject(Session("somePerson")) = true Then
set mySessionPerson = Session("somePerson")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12860 次 |
| 最近记录: |