麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

解析Asp.net Core中使用Session的方法

2024-07-10 13:31:54
字體:
來源:轉載
供稿:網友

前言

2017年就這么悄無聲息的開始了,2017年對我來說又是特別重要的一年。

元旦放假在家寫了個Asp.net Core驗證碼登錄, 做demo的過程中遇到兩個小問題,第一是在Asp.net Core中引用dll,以往我們引用DLL都是直接引用,在Core里這樣是不行的,必須基于NuGet添加,或者基于project.json添加,然后保存VS會啟動還原類庫。

第二就是使用Session的問題,Core里使用Session需要添加Session類庫。

添加Session

在你的項目上基于NuGet添加:Microsoft.AspNetCore.Session

修改startup.cs

在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(這個地方是Asp.net Core pipeline):services.AddSession();

接下來我們要告訴Asp.net Core使用內存存儲Session數據,在Configure(IApplicationBuilder app,...)中添加代碼:app.UserSession(); 

Session

1、在MVC Controller里使用HttpContext.Session

using Microsoft.AspNetCore.Http;public class HomeController:Controller{   public IActionResult Index()   {       HttpContext.Session.SetString("code","123456");       return View();     }    public IActionResult About()    {       ViewBag.Code=HttpContext.Session.GetString("code");       return View();    }}

2、如果不是在Controller里,你可以注入IHttpContextAccessor

public class SomeOtherClass{   private readonly IHttpContextAccessor _httpContextAccessor;   private ISession _session=> _httpContextAccessor.HttpContext.Session;   public SomeOtherClass(IHttpContextAccessor httpContextAccessor)   {      _httpContextAccessor=httpContextAccessor;          }   public void Set()   {     _session.SetString("code","123456");   }     public void Get()  {     string code = _session.GetString("code");   }}

存儲復雜對象

存儲對象時把對象序列化成一個json字符串存儲。

public static class SessionExtensions{   public static void SetObjectAsJson(this ISession session, string key, object value)  {    session.SetString(key, JsonConvert.SerializeObject(value));  }  public static T GetObjectFromJson<T>(this ISession session, string key)  {    var value = session.GetString(key);    return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);  }}
var myComplexObject = new MyClass();HttpContext.Session.SetObjectAsJson("Test", myComplexObject);var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");

使用SQL Server或Redis存儲

1、SQL Server

添加引用  "Microsoft.Extensions.Caching.SqlServer": "1.0.0"

注入:

// Microsoft SQL Server implementation of IDistributedCache.// Note that this would require setting up the session state database.services.AddSqlServerCache(o =>{  o.ConnectionString = "Server=.;Database=ASPNET5SessionState;Trusted_Connection=True;";  o.SchemaName = "dbo";  o.TableName = "Sessions";});

2、Redis

添加引用   "Microsoft.Extensions.Caching.Redis": "1.0.0"

注入:

// Redis implementation of IDistributedCache.// This will override any previously registered IDistributedCache service.services.AddSingleton<IDistributedCache, RedisCache>();

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产 一区 精品 | 狠狠操操 | 成年免费大片黄在线观看岛国 | 最新av网址在线观看 | 色网站免费观看 | 国产羞羞视频在线观看免费应用 | 孕妇体内谢精满日本电影 | 国产午夜精品久久久久 | 老女人碰碰在线碰碰视频 | 一区二区三区视频在线观看 | 欧美视频在线一区二区三区 | 私库av在线免费观看 | 国产精品视频二区不卡 | 国产一级做a | 欧美亚洲免费 | 欧美一级α | 线观看免费完整aaa 一二区成人影院电影网 | 香蕉在线播放 | 一级一级一级毛片 | 亚洲成人中文字幕在线 | 国产中文99视频在线观看 | 国产成年人视频 | 毛片一区二区三区四区 | 成人免费自拍视频 | www.国产一区.com | 北京一级毛片 | 国产1区2| 毛片大全在线观看 | 一边吃奶一边插下面 | 双性精h调教灌尿打屁股的文案 | 亚洲精品a在线观看 | 欧美激情精品久久久久 | 成人444kkkk在线观看 | 国产精品久久久久久久久久久久久久久久 | 日韩色视频 | 日韩视频区 | 91精品久久久久久久久久久 | 一级国产电影 | 久久久一区二区三区四区 | 久久精品亚洲一区 | av国语|