User LoginUser = new User(); Session [「User」] = LoginUser;關於在c#web應用程序中的會話的問題
將對象(LoginUser)傳遞給Session是什麼意思?會話會從對象(LoginUser)獲取任何時間值嗎?
User LoginUser = new User(); Session [「User」] = LoginUser;關於在c#web應用程序中的會話的問題
將對象(LoginUser)傳遞給Session是什麼意思?會話會從對象(LoginUser)獲取任何時間值嗎?
您應該注意,User對象在您將其放入應用程序的會話中時會被序列化。
User LoginUser = new User();
它有一些後果: 1)用戶類必須是可序列化。 2)當你稍後訪問對象時(見Oded答案),它將從會話中反序列化:你不會保留相同的引用。
User loginUser = new User();
loginUser.Name="user1";
Session["User"] = LoginUser;
loginUser.Name = "user2";
var loginUser2 = (User)Session["User"];
=> loginUser2.Nam contains "user1";
它爲什麼這樣工作?當你在會話中放置一個對象時,.NET框架將把它存儲在某個地方(可能在服務器內存中,在文件中或在數據庫中,這取決於會話存儲機制)。要堅持你的對象,它將被序列化爲(轉換成字節序列)。序列化過程在MSDN中描述。序列化過程相當具有參數化,且主題相當大。實際上這個帖子太大了。
要創建一個可序列化的類,只需將Serializable屬性添加到類中,並確保所有類字段或屬性都是可序列化的。
[Serializable]
public class MyClass
{
public string Field{get,set}
}
你的回答很好,我有疑問你能清除它。 1.你能告訴我你的意思是「可序列化和反序列化」嗎?2.以及如何/何時可以得到用戶2 ... – selvaraj 2010-10-06 10:51:14
A增加了一些關於序列化的精度。要從會話中獲取user2,應該由新用戶(Session [「User」] = loginUSer)替換會話中的初始User, – Eilistraee 2010-10-06 13:08:02
您正在將該對象添加到會話變量中,該會話變量將在該會話期間在整個應用程序中可用。
然後,您可以(在其他頁面,例如)訪問這樣的:
User loginUser = (User)Session["User"];
您需要使用loginUser
時要小心,因爲如果會話超時,或者如果你沒有添加的對象前面的會議,它可能是null
。
請解釋「獲取任何時間值」是什麼意思?這個不成立。 – Oded 2010-10-06 09:51:53
您好我認爲該對象可能會給會議超時期.. – selvaraj 2010-10-06 11:01:42