asp.net core session的使用


Session介紹

本文假設讀者已經了解Session的概念和作用,並且在傳統的.net framework平台上使用過。

Asp.net core 1.0好像需要單獨安裝,在nuget控制台,選擇你的web項目執行以下命令:

Install-Package Microsoft.AspNetCore.Session

如果需要卸載,在nuget控制台,選擇具體項目,執行以下命令:

Uninstall-Package Microsoft.AspNetCore.Session

Asp.net core 2.0已經集成了Session組件,無需單獨安裝。

Asp.net core中的session使用方法跟傳統的asp.net不一樣,它內置了兩個方法供我們調用:

void Set(string key, byte[] value);
bool TryGetValue(string key, out byte[] value);

這兩個方法的第一個參數都是key,第二個參數都是value,且value是一個byte[]類型的數據。所以在使用的時候,我們還需要做轉換,使用起來很不方便。

針對這一點,session提供了擴展方法,但是需要引用Microsoft.AspNetCore.Http命名空間。然后再使用擴展方法:

public static byte[] Get(this ISession session, string key);
public static int? GetInt32(this ISession session, string key);
public static string GetString(this ISession session, string key);
public static void SetInt32(this ISession session, string key, int value);
public static void SetString(this ISession session, string key, string value);

使用方法如下:

HttpContext.Session.SetString("password", "123456");
var password = HttpContext.Session.GetString("password");

Session使用

打開Startup.cs文件

1.在ConfigureServices方法里面添加:

services.AddSession();

2.在Configure方法里面添加:

app.UseSession();

3.新建控制器SessionController,添加如下代碼:

        /// <summary>
        /// 測試Session
        /// </summary>
        /// <returns></returns>
        public IActionResult Index()
        {
            var username = "subendong";
            var bytes = System.Text.Encoding.UTF8.GetBytes(username);
            HttpContext.Session.Set("username", bytes);

            Byte[] bytesTemp;
            HttpContext.Session.TryGetValue("username", out bytesTemp);
            var usernameTemp = System.Text.Encoding.UTF8.GetString(bytesTemp);

            //擴展方法的使用
            HttpContext.Session.SetString("password", "123456");
            var password = HttpContext.Session.GetString("password");

            var data = new {
                usernameTemp,
                password
            };

            return Json(data);
        }

4.F5運行,輸入地址:http://localhost/session,即可查看正確輸出:

{"usernameTemp":"subendong","password":"123456"}

5.如果第一步和第二步不做的話,直接使用session,會報錯:

InvalidOperationException: Session has not been configured for this application or request


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM