91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net中session怎么使用

發布時間:2021-07-16 14:43:20 來源:億速云 閱讀:97 作者:Leah 欄目:開發技術

asp.net中session怎么使用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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成為了一個更加強大的功能。

關于asp.net中session怎么使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳江县| 贵德县| 神木县| 当涂县| 海口市| 贺州市| 胶南市| 鄂温| 安阳市| 宁蒗| 五大连池市| 香港| 马山县| 容城县| 布拖县| 汪清县| 津市市| 昭平县| 自贡市| 龙州县| 筠连县| 花垣县| 龙川县| 夏津县| 靖安县| 长岛县| 尚志市| 邢台县| 克拉玛依市| 房产| 日喀则市| 昭通市| 洛阳市| 乳源| 武宣县| 遂昌县| 略阳县| 武城县| 塘沽区| 茂名市| 运城市|