Asp.net会话开始如何?
问题描述:
有人请解释为什么如果我(尝试)在会话启动事件中创建类的实例,我总是在多个会话中获得相同的实例?
我有几个班,让我们说老师,学生&文件。
公共模块中我有Asp.net会话开始如何?
Public Teachers as Teacher
Public Students as Student
Public Doc as Documents
Global.asax
session start event
Teachers = new teacher
Students = new Student
Doc = new Documents
我想应该每次会话开始,我会得到每个类的新实例。我不明白为什么这不会发生。
无论我做什么,我都会得到相同的实例。如果我打开浏览器并为任何类成员设置值,则在另一个浏览器会话中存在相同的值。就像是如果不是一个会话变量我有一个应用程序变量???? !!!!
如何/我可以在哪里声明我的对象用于整个站点的每个会话?
非常感谢!
答
设定值:
Session("Teachers") = New Teachers
获得价值:
Dim objTeachers As Teachers = CType(Session("Teachers"), Teachers)
答
我不会用会话开始,因为它是静态的,为此将只提供一类的一个实例,我会初始化任何类您需要在页面加载事件/方法中使用。
如果是,你需要为特定的用户使用会话看到http://msdn.microsoft.com/en-us/library/ms178581.ASPX
您可能需要阅读http://stackoverflow.com/questions/11802850/how-to-get-会话期间保持数据一个模块之间的公共变量不可共享价值 –
这些类是做什么的?可能会有更好的解决方案,比如使用'singleton'或'static'(我认为在VB中共享)类 – christiandev
你可以分享更多的代码吗?从您提供的有限代码示例中看不出您正在做什么。 – Derek