今天發現在一個Asp.net站點中, 同一次登錄, 不停刷新頁面或者頁面跳轉, 此時后台Session的SessionID總是變化的.
創建一個頁面,添加一個button,后台代碼非常簡單,如下
1
2
3
4
5
6
7
8
9
|
protected
void
Page_Load(
object
sender, EventArgs e)
{
Response.Write(Session.SessionID);
}
protected
void
Button1_Click(
object
sender, EventArgs e)
{
Session[
"userName"
] =
"bsbdfe123"
;
}
|
前台就一個button按鈕,當頁面加載完成后,我嘗試着做如下事情。
1、不停的刷新頁面,sessionid一直會變。
2、不停的點擊button,sessionid一直不變。
1.你開始不停的刷新的時候壓根就沒用去用session,所以服務器認為這個會話來源不同的用戶。
2.當你使用了session的時候,服務器會向客戶端發送一個包含sessionid的cookie,(button按鈕點擊事件里,使用了session.)會發現sessionID不變。
或者
只要在Global.ascx中加入:
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
}
就可保證同一次會話的SessionID不變.