2013-11-27 87 views
0

有人請解釋爲什麼如果我(嘗試)在會話啓動事件中創建類的實例,我總是在多個會話中獲得相同的實例?
我有幾個班,讓我們說老師,學生&文件。
公共模塊中我有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 

我想應該每次會話開始,我會得到每個類的新實例。我不明白爲什麼這不會發生。

無論我做什麼,我都會得到相同的實例。如果我打開瀏覽器併爲任何類成員設置值,則在另一個瀏覽器會話中存在相同的值。就像是如果不是一個會話變量我有一個應用程序變量???? !!!!
如何/我可以在哪裏聲明我的對象用於整個站點的每個會話?

非常感謝!

+0

您可能需要閱讀http://stackoverflow.com/questions/11802850/how-to-get-會話期間保持數據一個模塊之間的公共變量不可共享價值 –

+0

這些類是做什麼的?可能會有更好的解決方案,比如使用'singleton'或'static'(我認爲在VB中共享)類 – christiandev

+0

你可以分享更多的代碼嗎?從您提供的有限代碼示例中看不出您正在做什麼。 – Derek

回答

0

設定值:

Session("Teachers") = New Teachers 

獲得價值:

Dim objTeachers As Teachers = CType(Session("Teachers"), Teachers) 
0

我不會用會話開始,因爲它是靜態的,爲此將只提供一類的一個實例,我會初始化任何類您需要在頁面加載事件/方法中使用。

如果是,你需要爲特定的用戶使用會話看到http://msdn.microsoft.com/en-us/library/ms178581.ASPX