session - session 对象中的经典ASP Store对象

标签 session asp-classic object-persistence

我是经典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/

相关文章:

php - 如何使用 time() 来计算您登录的秒数

global-variables - 如何正确创建 G-Wan 全局变量?

NHibernate:多对一 - *您必须*加载父对象?

authentication - Google 如何管理多个域之间的身份验证?

跨域和共享多个域的 PHP Session

sql-server-2008 - nvarchar(max) 字段和经典 ASP 的奇怪问题

asp-classic - 经典 ASP Server.MapPath() 在 global.asa 中无法按预期工作

c# - 在 ASP、C# 和 VB.Net 中如何检索当前行号

c# - 在关系数据库中保存任何类型的对象

java - 当 ajax 调用提出请求时,重定向页面在过滤器中不起作用?