<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        asp.net session的使用與過期實例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:40:34
        文檔

        asp.net session的使用與過期實例代碼

        asp.net session的使用與過期實例代碼:1.Session是一種Web會話中的常用狀態之一。 2.Session提供了一種把信息保存在服務器內存中的方式。他能儲存任何數據類型,包含自定義對象。 3.每個客戶端的Seesion是獨立存儲的。 4.在整個會話過程中,只要SessionID的cookie不丟失,都會保存Sess
        推薦度:
        導讀asp.net session的使用與過期實例代碼:1.Session是一種Web會話中的常用狀態之一。 2.Session提供了一種把信息保存在服務器內存中的方式。他能儲存任何數據類型,包含自定義對象。 3.每個客戶端的Seesion是獨立存儲的。 4.在整個會話過程中,只要SessionID的cookie不丟失,都會保存Sess

        1.Session是一種Web會話中的常用狀態之一。

        2.Session提供了一種把信息保存在服務器內存中的方式。他能儲存任何數據類型,包含自定義對象。

        3.每個客戶端的Seesion是獨立存儲的。

        4.在整個會話過程中,只要SessionID的cookie不丟失,都會保存Session信息的。

        5.Session不能跨進程訪問,只能由該會話的用戶訪問。應為提取Session數據的id標識是以Cookie的方式保存到訪問者瀏覽器的緩存里的。

        6.當會話終止,或過期時,服務器就清除Session對象。

        7.Session常用于保存登錄用戶的ID.

        8.Session保存的數據是跨頁面全局型的。

        例如我們想了解一下訪問我們網站的用戶瀏覽了幾個頁面,我們可能在用戶可能訪問到每個的頁面中加入:

        代碼如下:
        <%
        If Session("PageViewed") = ""Then
         Session("PageViewed") = 1
        Else
         Session("PageViewed") = Session("PageViewed") + 1
        End If
        %>

          通過以下這句話可以讓用戶得知自己瀏覽了幾個頁面:


        代碼如下:
        <%
        Response.Write("You have viewed " & Session("PageViewed") & " pages")
        %>


        Session的使用

        代碼如下:
        <head runat="server">
            <title></title>
            <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
            <script type="text/javascript">
                function getSessionClick(action) {   //這個函數是為了知道哪一個提交按鈕被點擊
                    $("#hidlgc").val("");  //清空隱藏值
                    $("#hidlgc").val(action);   //給隱藏控件賦值
                }
            </script>
        </head>
        <body>
            <form id="form1" method="post" action="MySession.aspx">
                 <table>
                    <tr>
                        <td>賬號:</td><td><input type="text" name="txtUid" /></td>`
                    </tr>
                     <tr>
                        <td>密碼:</td><td><input type="password" name="txtPwd" /></td>
                     </tr>
                     <tr>               
                        <td colspan="2">
                            <input type="hidden" value="" id="hidlgc" name="hidlgclick" /> 
                            <input onclick="getSessionClick('lgclick')" type="submit" value="登錄" />
                            <input type="submit" onclick="getSessionClick('getSession')" value="獲取session" />
                            <input type="submit" onclick="getSessionClick('backLg')" value="退出登錄" />
                        </td>
                     </tr>
                 </table>
            </form>
        </body>

        .net代碼

        代碼如下:
        protected void Page_Load(object sender, EventArgs e)
                {
                    //把用戶id寫入session中
                    if (Request.Form["hidlgclick"] == "lgclick")
                    {
                        if(Request.Form["txtUid"].ToString()=="admin"&&Request.Form["txtUid"].ToString()=="admin") //判斷用戶登錄
                        {
                            Session["userName"] = Request.Form["txtUid"].ToString();  //把用戶id保存到session中
                            Response.Write(Session["userName"].ToString()+"---點擊登錄"); //獲取session,并寫入頁面
                        }
                    }
                    //獲取Session
                    if (Request.Form["hidlgclick"] == "getSession")
                    {
                        if (Session["userName"] != null)
                        {
                            Response.Write(Session["userName"].ToString() + "---點擊獲取session"); //獲取session,并寫入頁面
                        }
                    }
                    //取消當前會話,相當于注銷(退出登錄)。
                    if (Request.Form["hidlgclick"] == "backLg")
                    {
                        Session.Abandon();
                    }
                }


        那么我們要怎么判斷session是否過期了呢

        方法一:最笨的方法,在每個頁面的page_load()方法中判斷。


        代碼如下:
        If(Session[“UserId”]!=null)

        {

        //登陸成功的情況

        }

        Else

        {

        //response.write(“<script>alter(‘請登陸');</script>”);

        }

        這種方法在每個頁面都需要寫入重復的代碼。代碼冗余

         方法二:可以在HttpModule中判斷,在HttpModule中注冊請求管道的AcquireRequestState

        事件(可以拿到session的那個事件)

        步奏:

        1:新建一個繼承IHttpModule接口的類Module

        2:讓Module類實現接口成員。

        3:在Init()方法中對Context進行注冊AcquireRequestState事件(在這個事件中可以拿到Session)

        4:在方法中寫

        代碼如下:
        void context_AcquireRequestState(object sender, EventArgs e)

            {

                HttpApplication app = (HttpApplication)sender;

                if (app.Context.Session["userId"] == null)

                {

                    app.Response.Write("<script>alert('沒有登錄');</script>");

                }

        }

        5:在web.config配置文件中<system.web>節點下添加一個節點
        代碼如下:
        <httpModules>

              <add name="demo" type="Module"/> <!--type后面是命名空間.類名-->

            </httpModules>


        使用這種方法會在每個頁面加載的時候都先檢查module。

        原理是實現IHttpModule接口的類是在執行頁面之前執行的。 在page_load()事件執行之前就判 斷Session如果不存在就提示。

        這種方法效率能高一些,因為如果不存在 session直接就可以處理。后面的一系列事件都可以不 用執行。


        方法三:在page類上做點手腳

        Page類中有OnInit()這個虛方法。

        步奏:

        1:創建一個集成Page類的類TestSession

        2:在TestSession中重寫OnInit()這個方法。

        3:在OnInit()方法中判斷Session

        4:在需要判斷session的頁面集成TestSession這個類,而不是繼承Page類

        這種方法比較靈活,在需要判斷session的頁面中繼承TestSession就可以,不需要判斷session 的頁面直接繼承Page就行了


        Session的功能的缺陷

          目前ASP的開發人員都正在使用Session這一強大的功能,但是在他們使用的過程中卻發現了ASP Session有以下缺陷:

          進程依賴性:ASP Session狀態存于IIS的進程中,也就是inetinfo.exe這個程序。所以當inetinfo.exe進程崩潰時,這些信息也就丟失。另外,重起或者關閉IIS服務都會造成信息的丟失。
          Session狀態使用范圍的局限性:剛一個用戶從一個網站訪問到另外一個網站時,這些Session信息并不會隨之遷移過去。例如:新浪網站的WWW服務器可能不止一個,一個用戶登錄之后要去各個頻道瀏覽,但是每個頻道都在不同的服務器上,如果想在這些WWW服務器共享Session信息怎么辦呢?
        Cookie的依賴性:實際上客戶端的Session信息是存儲與Cookie中的,如果客戶端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。
        鑒于ASP Session的以上缺陷,微軟的設計者們在設計開發 ASP.NET Session時進行了相應的改進,完全克服了以上缺陷,使得ASP.NET Session成為了一個更加強大的功能。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        asp.net session的使用與過期實例代碼

        asp.net session的使用與過期實例代碼:1.Session是一種Web會話中的常用狀態之一。 2.Session提供了一種把信息保存在服務器內存中的方式。他能儲存任何數據類型,包含自定義對象。 3.每個客戶端的Seesion是獨立存儲的。 4.在整個會話過程中,只要SessionID的cookie不丟失,都會保存Sess
        推薦度:
        標簽: 過期 代碼 的代碼
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 四虎永久免费网站免费观看| 精品无码国产污污污免费网站 | 色影音免费色资源| 亚洲精品国产情侣av在线| 91精品国产免费久久国语蜜臀| 亚洲高清在线观看| 久久久高清日本道免费观看| 亚洲AV日韩AV永久无码绿巨人| 久久综合国产乱子伦精品免费| 亚洲高清视频在线播放| 久草免费在线观看视频| 亚洲色成人网站WWW永久四虎| 日本特黄a级高清免费大片| 美女尿口扒开图片免费| 亚洲人成无码网站久久99热国产| 永久免费无码日韩视频| 亚洲精品乱码久久久久久久久久久久 | 亚洲视频在线观看一区| 精品免费久久久久久久| 亚洲中文字幕AV每天更新| 四虎影在线永久免费观看| 91成人免费福利网站在线| 亚洲天堂一区二区| 免费无码又爽又刺激高潮| 亚洲天堂免费在线视频| 91嫩草私人成人亚洲影院| 四虎成人精品一区二区免费网站| av网站免费线看| 久久精品国产亚洲av麻豆小说 | 国产成人亚洲精品无码AV大片| 久久精品夜色噜噜亚洲A∨| 无码av免费一区二区三区| 亚洲乱码一区二区三区国产精品| 亚洲国产主播精品极品网红| 七色永久性tv网站免费看| 亚洲一区二区三区免费在线观看| 免费中文字幕在线观看| 99re在线视频免费观看| 猫咪免费人成在线网站| 亚洲视频一区二区在线观看| 男人的天堂亚洲一区二区三区 |