程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 關於iis session詳解

關於iis session詳解

編輯:關於PHP編程

session基本操作添加 修改 session項session.add("test", datetime.now);
session["test"] = datetime.now;添加和修改session的方法是一樣的,當指定的session標識不存在時,系統會添加。當存在時系統會更新。刪除 session項session.remove("test");不要使用session["test"] = null; 這樣只是將值設置為null!移除所有session項session.clear(); 或 session.removeall();終止當前會話狀態session.abandon();當前session項數量session.count當前sessionidsession.sessionidsession何時創建所有浏覽器(ie、chrome、firefox)當第一次打開浏覽器時(當前未運行浏覽器時),服務器端會創建新的session。ie浏覽器,當已有浏覽器運行時,打開新的浏覽器則會創建新的session。而chrome、firefox當已有浏覽器運行時,打開新的浏覽器不會創建新的session。當session過期後,繼續訪問時會創建session。當session創建時會觸發 global.asax 中的session_start方法。session何時過期

  • 代碼 session.abandon(); 引起session過期。
  • session超時,自動過期。
  • web.config 被修改,將會過期。
  • iis的應用程序池被回收引起。
當session過期時會觸發 global.asax 中的session_end方法。奇怪的問題: session.abandon(); 和 session超時自動過期的效果是一樣的。引起的過期後,當刷新頁面時會執行session_start 和 session_end方法。如何避免在session_start 中添加session["sessionstartdatetime"] = datetime.now;在調用session.abandon();後執行response.cookies.add(new httpcookie("asp教程.net_sessionid", ""));讓sessionid重置。session過期時間在web.config中設置 <sessionstate mode="inproc" timeout="20"></sessionstate> 分鐘值。(未填寫時默認是20分鐘過期)iis的會話超時設置並不起效。(設置位置如下圖)\網站關聯的應用程序池,的回收時間限制。經測試也不起效。但如果手動回收或設置定時回收則起效。(如何關聯網站應用程序池如下圖)\\如何防止session過期可以設置較長的session過期時間。但如果設置過長可能會引起服務器負擔過重。將session模式設置為進程外或數據庫教程中。在此就不做討論。一般實際情況可能是,用戶在某些頁面,如博客文章提交頁,在編輯過程因為要很長時間。可能在提交時發現session過期了。而導致用戶信息丟失無法提交文章。如果是這種情況,可能只想將指定頁面的session時間延長。可以通過ajax定時訪問後台的一空白頁面。來保持session在線。<script type="text/網頁特效">
    function updatesession(){
        $.get('/ajax/updatesession.aspx');
    }
    window.setinterval(updatesession, 60000);
</script>建立一個空頁面updatesession.aspx注意在page_load中添加 注意當ajax請求aspx頁面時,aspx頁面應設置為不允許緩存!protected void page_load(object sender, eventargs e)
{
    response.appendheader("pragma", "no-cache");
    response.appendheader("cache-control", "no-cache, must-revalidate");
    response.appendheader("expires", "0");
}關於sessionid當session過期後,sessionid並未改變。調用 response.cookies.add(new httpcookie("asp.net教程_sessionid", "")); 可設置sessionid當設置為空時,服務器端會創建新的session。而老的session並未被釋放。當設置為其他已有的sessionid值時,此時的session將獲取的是指定的session。這就是session劫持了。如何統計當前網站session個數。創建類view sourceprint? public class constants {     /// <summary>     /// 當前session個數     /// </summary>     public static int sessioncount = 0;        /// <summary>     /// 累計session個數     /// </summary>     public static int sessionallcount = 0; }  在global.asax中添加view sourceprint? void session_start(object sender, eventargs e) {     constants.sessionallcount++;     constants.sessioncount++;     session["sessionstartdatetime"] = datetime.now; }    void session_end(object sender, eventargs e) {     constants.sessioncount--; }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved