1. 程式人生 > >ASP.NET Core 使用Redis儲存Session

ASP.NET Core 使用Redis儲存Session

首先建立ASP.NET CORE Web專案,然後按如下順序操作。

1.新增nuget程式包:

Microsoft.AspNetCore.Session;
Microsoft.AspNetCore.DataProtection.Redis;
Microsoft.Extensions.Caching.Redis.Core;
Microsoft.AspNetCore.Http;     //使用Session時有擴充套件方法

2.在appsettings.json中新增Redis配置:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "WebConfig": {
    "Redis": {
      "Connection": "127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase=5",
      "InstanceName": "Test_Redis_Session_"
    },
    "SessionTimeOut": "30" //session過期時長,分鐘
  }
}

3.在startup.cs類中,按如下例子新增程式碼:

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            #region 使用Redis儲存Session
            var redisConn = Configuration["WebConfig:Redis:Connection"];
            var redisInstanceName = Configuration["WebConfig:Redis:InstanceName"];
            //Session 過期時長分鐘
            var sessionOutTime = Configuration.GetValue<int>("WebConfig:SessionTimeOut", 30);

            var redis = StackExchange.Redis.ConnectionMultiplexer.Connect(redisConn);
            services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Test-Keys");
            services.AddDistributedRedisCache(option =>
            {
                //redis 連線字串
                option.Configuration = redisConn;
                //redis 例項名
                option.InstanceName = redisInstanceName;
            }
            );
            #endregion

            //新增Session並設定過期時長
            services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(sessionOutTime); });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();


            app.UseSession();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

4.在控制器HomeController中新增:

public class HomeController : Controller
    {
        public IActionResult Index()
        {
            ViewData["UserName"] = this.HttpContext.Session.GetString("UserName");
            ViewData["PassWord"] = this.HttpContext.Session.GetString("PassWord");
            return View();
        }


        [HttpPost]
        public NoContentResult Add(string userName,string pwd)
        {
            this.HttpContext.Session.SetString("UserName", userName);

            this.HttpContext.Session.SetString("PassWord", pwd);

            return NoContent();
        }

5.在View/Index.cshtml新增如下程式碼:

…………
<form method="post" action="../Home/Add">
    <div>
        <input name="username" id="username" type="text" value="@ViewData["UserName"]" />
        <input name="pwd" id="pwd" type="password" value="" />
        <input type="submit" value="更新" />
        <h1>提交使用者名稱稱為:@ViewData["UserName"]    密碼:@ViewData["PassWord"]</h1>
        <a href="javascript:void(0);" onclick="window.location.reload();">重新整理顯示最新值</a>
    </div>
</form>
  …………

相關推薦

Asp.net core如何使用Session

host con pre ner mvc -s bsp bubuko 使用 Asp.net core使用session: 在新建Asp.net core應用程序後,要使用session中間件,在startup.cs中需執行三個步驟: 1.使用實現了IDistributedc

ASP.NET Core 中簡單Session登入校驗

ASP.NET Core 中簡單Session登入校驗:從Session的配置新增、到請求過濾、再到頁面操作。推薦相關閱讀:ASP.NET 會話狀態概述  ASP.NET Cookie 概述  ASP.NET 狀態管理建議 ASP.NET Core 中的會話和應用狀態 目

ASP.NET CORE 中使用 SESSION (轉載)

Session 是儲存使用者和 Web 應用的會話狀態的一種方法,ASP.NET Core 提供了一個用於管理會話狀態的中介軟體。在本文中我將會簡單介紹一下 ASP.NET Core 中的 Session 的使用方法。     安裝配置 Session nuget 新增引用 M

(26)ASP.NET Core EF儲存(基本儲存儲存相關資料、級聯刪除、使用事務)

1.簡介 每個上下文例項都有一個ChangeTracker,它負責跟蹤需要寫入資料庫的更改。更改實體類的例項時,這些更改會記錄在ChangeTracker中,然後在呼叫SaveChanges時會被寫入資料庫中。此資料庫提供程式負責將更改轉換為特定於資料庫的操作(例如,關係資料庫的INSERT、UPDATE和D

ASP.NET Core 使用Redis儲存Session

首先建立ASP.NET CORE Web專案,然後按如下順序操作。 1.新增nuget程式包: Microsoft.AspNetCore.Session; Microsoft.AspNetCore.DataProtection.Redis; Microsoft.E

Asp.net Core中使用Redis儲存Session

今天 無意看到Asp.net Core中使用Session  ,首先要使用Session就必須新增Microsoft.AspNetCore.Session包,預設Session是隻能存去位元組,所以如果你想存取string的,那麼還的引入Microsoft.AspNetC

ASP.NET Core 儲存Session的方法

原文地址:https://www.cnblogs.com/wtujvk/p/8743035.html ASP.NET Core 儲存Session的方法:a.記憶體方式,b.Redis,c.Redis叢集,d.SqlServer 1.使用Session(程序內) 在startup中新增方

Asp.Net Core 2.0 項目實戰(6)Redis配置、封裝幫助類RedisHelper及使用實例

命名 redis數據庫 remove per chang open htm lazy 鏈接 本文目錄 1. 摘要 2. Redis配置 3. RedisHelper 4.使用實例 5. 總結 1. 摘要   由於內存存取速度遠高於磁盤讀取的特

asp.net core session的使用

code 命名空間 項目執行 ati art ise .get TP 介紹 Session介紹 本文假設讀者已經了解Session的概念和作用,並且在傳統的.net framework平臺上使用過。 Asp.net core 1.0好像需要單獨安裝,在nuget控制臺,

ASP.NET Core 2 學習筆記(十一)Cookies & Session

自動 asp Go 內存 rtu serialize .html call names 原文:ASP.NET Core 2 學習筆記(十一)Cookies & Session基本上HTTP是沒有記錄狀態的協定,但可以通過Cookies將Request來源區分出來,並

ASP.NET CORE CACHE的使用(含MemoryCache,Redis

原文:https://blog.csdn.net/warrior21st/article/details/62884629?utm_source=copy    依賴名稱空間: Microsoft.AspNetCore.Mvc;//測試呼叫時 Microsoft.

Asp.net Core 快取 MemoryCache 和 Redis

https://blog.csdn.net/warrior21st/article/details/62884629 快取介面 ICacheService      快取也好,資料庫也好,我們就是進行CRUD操作,介面沒什麼好解釋的,註釋我寫的很明白,這裡就

asp.net core 2.1 dotnet(五)EF.core Dbfirst 生成 檢視與呼叫儲存過程

1 檢視,可以直接在 Model中寫 檢視的模型 執行方式如找到一個,還沒有試過:     有關 .net core EF 的問題有一個地址: https://github.com/aspnet/EntityFra

asp.net core 釋出到iis session無法傳遞的問題

網站是用asp.net core 的Razor Pages開發的,其中使用者登入用到了session,除錯執行沒有問題,但是釋出到iis之後出現session無法記錄的問題。 我用log記錄查看了一下,發現同一頁面記錄session再取是可以的,但是跳轉到另一個頁面就無法獲取session資訊了。 解決方

.NET 黑魔法 - asp.net core 配置檔案的"物件儲存"

來,全都是乾貨。 我們都知道在Framework版本的mvc專案中,配置資料是通過web.config裡的appSettings節點配置,我們不得不寫一些讀取配置檔案字串的類,比如儲存在靜態的變數中。 而在mvc core中,這種不優雅的讀取字串的方式得到了進化,以json資料寫入和讀取的方式很優雅,省了很

Asp.Net Core 2.1 儲存Cookie的3種方法

Asp.Net Core 2.1生成的專案模板預設實現了《歐洲常規資料保護法規 (GDPR)》支援。這就使得我們的程式要想成功的儲存除了使用者身份以外的cookie通常是需要使用者同意的。     這裡提供筆者已知的3種儲存cookie的方法:     1.在Startu

Asp.Net Core Web Api圖片上傳(一)整合MongoDB儲存例項教程

Asp.Net Core Web Api圖片上傳及MongoDB儲存例項教程(一) 圖片或者檔案上傳相信大家在開發中應該都會用到吧,有的時候還要對圖片生成縮圖。那麼如何在Asp.Net Core Web Api實現圖片上傳儲存以及生成縮圖呢?今天我就使用MongoDB作為圖片儲存,然後使用SixLabors

ASP.NET Core中介軟體實現分散式 Session

1.1. 中介軟體原理 1.1.1. 什麼是中介軟體 中介軟體是段程式碼用於處理請求和響應,通常多箇中間件連結起來形成管道,由每個中介軟體自己來決定是否要呼叫下一個中介軟體。 1.1.2. 中介軟體執行過程 舉一個示例來演示中介軟體的執行過程(

asp.net core 運用 Redis 配置步驟

Redis可以用來儲存session或直接儲存鍵值對 首先要有asp.net core的專案,可以是webapi 或者MVC專案, 還有有本地的Redis或者在遠端伺服器上,具體的安裝就不講述了 以下是具體配置過程: 1.安裝 "Microsoft.Extensio

【無私分享:ASP.NET CORE 專案實戰(第十一章)】Asp.net Core 快取 MemoryCache 和 Redis

1 /// <summary> 2 /// 修改快取 3 /// </summary> 4 /// <param name="key">快取Key</param> 5 ///