1. NUGET包引用 Microsoft.AspNetCore.Session
2. Startup.cs中的相应方法加入些代码:
//注册服务
public void ConfigureServices(IServiceCollection services)
{
............................................
services.AddSession();
............................................
}
//添加
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
............................................
app.UseSession();
............................................
}
3. 以下是控制器中使用SESSION的代码,记得要先引用那个命名空间:
using Microsoft.AspNetCore.Http; //安装1的包后,在类中引用 这个命名空间
//赋值
HttpContext.Session.SetString("TestA","123456");
//取值
var aa = HttpContext.Session.GetString("TestA");
4. 那如果还想要用session保存对象数据结构咋整?那就用This来扩展方法咯
public static class SessionObject
{
public static void SetObject<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetObject<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}
最后.这个自己的HttpContext,还能提供cookie哦. GlobalHttpContext.Current.Response.Cookies
另注意,目前只能在Controller中使用,要在其他类中使用Session,需要实例化IHttpContextAccessor,或者传入已实例化的IHttpContextAccessor(比如从Controller中传过去)