C#中的Session

來源:互聯網
上載者:User

標籤:

一:

網站開發中,為了儲存使用者資訊我們就會用到session。

Session具有以下特點:
(1)Session中的資料儲存在伺服器端;
(2)Session中可以儲存任意類型的資料;
(2)Session預設的生命週期是20分鐘,可以手動設定更長或更短的時間。

我們在aspx頁面中的調用一般只需要這麼寫:<%=session["key"]=value %>;

擷取session時一般這麼寫:string username=session["username"],但是在給對象賦值的時候我們需要注意兩點

1:判斷是否為null

2:類型的轉換

例子:

//使用Session對象來傳送使用者的登入名稱,在另一頁中將使用者的登入名稱顯示出//使用Session對象儲存使用者登入名稱的代碼如下:Session.Remove("UserName");Session["UserName"] = txtName.Text;Response.Redirect("a.aspx");

這裡用的重新導向去跳轉到指定頁面;是要注意:如果我們的請求是通過Ajax方法的時候,重新導向是不起作用的!

好,那這裡讓我們分析一下Response.Redirect的跳轉原因:

->Response.Redirect是本地跳轉,並不服務端跳轉;是往瀏覽器端輸出一個響應碼,這個響應碼為301或者302,告訴瀏覽器跳轉。

二:

a:使用Session變數
使用Session變數是可以在頁面間傳遞值的的另一種方式,在本例中我們把控制項中的值存在Session變數中,然後在另一個頁面中使用它,以不同頁面間實現值傳遞的目的。但是,需要注意的是在Session變數儲存過多的資料會消耗比較多的伺服器資源,在使用session時應該謹慎,當然了,我們也應該使用一些清理動作來去除一些不需要的session來降低資源的無謂消耗。

釋放方式:session.remove();

     session.removeAll();

       session.Abandon();

b:session傳遞數組的用法:

      

protected void Button1_Click(object sender, EventArgs e)    {        ArrayList sArr = new ArrayList();        sArr.Add("0");        sArr.Add("1");        sArr.Add("2");        sArr.Add("3");        sArr.Add("4");        sArr.Add("5");        Session["Array"] = sArr;        ArrayList sRarr = new ArrayList();        string ssMsg = "";        sRarr = (ArrayList)Session["Array"];        ssMsg = sRarr[3].ToString();        Response.Write("<script>window.alert(‘" + ssMsg + "‘)</script>");    }

 

c:使用Session驗證使用者登入

if (txtName.Text == "mr" && txtPassword.Text == "mrsoft"){Session["UserName"] = txtName.Text.Trim();Response.Redirect("a.aspx");}

Session對象預設失效期為20分鐘,使用者也可以在Web.Config中對其進行設定。

在用session的時候讓我想到我用過的viewdata,我感覺這兩個都能起到傳值的作用。

MVC中的弱類型,主要有ViewData和TempData
實則上應該都是字典,用於索引值對應關係,分別對應ViewDataDictionary以及TempDataDictionary。
ViewData只能在當前的HTTP請求中,不會像session一樣可以把資料帶到下一個HTTP請求。
TempData跟ViewData的區別是他是臨時性的,例如取代一些viewstatus一樣儲存用戶端的上一次資料。他的內部是通過session來儲存的。只要被取用一次後就自動清除session。

...待續!

C#中的Session

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.