ASP.Net中Session失效的一種編程思路

發表于:2008-04-08來源:作者:點擊數: 標簽:Session失效
在寫一個客戶的B/S結構應用程序時,突然發現一個技巧,不知道是否是MS的一個BUG,給相關的有研究的朋友原先考慮寫一個檢查Session的類,Session失效后,必須轉向登陸頁面,可每一個調用該類的頁面,在不同的 Web路徑下,所以轉到登陸頁面的URL都不同,每個頁
在寫一個客戶的B/S結構應用程序時,突然發現一個技巧,不知道是否是MS的一個BUG,給相關的有研究的朋友原先考慮寫一個檢查Session的類,Session失效后,必須轉向登陸頁面,可每一個調用該類的頁面,在不同的Web路徑下,所以轉到登陸頁面的URL都不同,每個頁面都要調用和設置登陸頁面路徑,所以實際應用就放棄了這一想法后來考慮到不如寫一個檢查Session失效的頁面,由客戶端每一秒都刷新一下,就可以在一個頁面中調用,但通過FRAME嵌入該ASPX老時有請求發出,不太好看,雖然該頁面是隱藏的.再后來,想想,就用一個頁面,使用無刷新技術,去請求該失效Session的頁面就可以了,此處的無刷新技術使用了XMLhttp對象,沒有使用WebService技術.(由于客戶的BS系統,使用FRAME框架,最上層的頁面是顯示軟件名稱,用戶登陸信息的,所以調用就放在該頁面中)。

    讓我們來看看代碼,主要是客戶端的JavaScript腳本程序 
    <script language="javascript">
       var idx=0;
       function ChkSession()
       {
        var Http = new ActiveXObject("Microsoft.XMLHTTP");
        Http.open("GET","ChkSessionOut.aspx",false); //檢查Session失效的頁面
        Http.send();
        var str = Http.responseText;//執行ASPX后的返回結果
        //idx++
        //document.all("ConvertResult").innerHTML = str+idx;
        if(str=="notnull")
        {
         //alert(str);
        }
        else
        {
         alert("會話值跟蹤時間超時,請重新登錄...");//這段代碼一直沒有運行,往下看,你就知道了
         location.href = "longin.aspx";
        }
        window.setTimeout(‘ChkSession()‘, 1000 );//每一秒鐘,請求一次ChkSessionOut.aspx
       }
      </script>

    這段CODE,我放在<HEAD></HEAD>標簽之間,然后在BODY加載時,調用該函數,如下:
    <BODY onload="ChkSession();">
    ChkSessionOut.aspx.cs的代碼如下ChkSessionOut.aspx文件中的HTML標簽全部被我刪除,這樣一來執行下面的代碼,就只有結果的輸出了 
    private void Page_Load(object sender, System.EventArgs e)
      {
       if(Session["sUserID"]==null)
       {
        Response.Write("isnull");
        return;
       }
       else
       {
        Response.Write("notnull");
        return;
       }
      }

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97