熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

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

2013-11-13 12:17:06  來源: .NET編程 

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

    讓我們來看看代碼主要是客戶端的JavaScript腳本程序 
    <script language=javascript>
       var idx=;
       function ChkSession()
       {
        var Http = new ActiveXObject(MicrosoftXMLHTTP);
        Httpopen(GETChkSessionOutaspxfalse); //檢查Session失效的頁面
        Httpsend();
        var str = HttpresponseText;//執行ASPX後的返回結果
        //idx++
        //documentall(ConvertResult)innerHTML = str+idx;
        if(str==notnull)
        {
         //alert(str);
        }
        else
        {
         alert(會話值跟蹤時間超時請重新登錄);//這段代碼一直沒有運行往下看你就知道了
         locationhref = longinaspx;
        }
        windowsetTimeout(ChkSession() );//每一秒鐘請求一次ChkSessionOutaspx
       }
      </script>

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

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15573.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.