[转]Asp.net Core中使用Session
2017-02-04 11:16
549 查看
本文转自:http://www.cnblogs.com/sword-successful/p/6243841.html
元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Core中引用dll,以往我们引用DLL都是直接引用,在Core里这样是不行的,必须基于NuGet添加,或者基于project.json添加,然后保存VS会启动还原类库。
第二就是使用Session的问题,Core里使用Session需要添加Session类库。
接下来我们要告诉Asp.net Core使用内存存储Session数据,在Configure(IApplicationBuilder app,...)中添加代码:app.UserSession();
2、如果不是在Controller里,你可以注入IHttpContextAccessor
添加引用
注入:
2、Redis
添加引用
注入:
分类: Asp.net Core
前言
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.Sessionusing 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>();
参考
http://benjii.me/2016/07/using-sessions-and-httpcontext-in-aspnetcore-and-mvc-core/博客地址: | http://www.cnblogs.com/sword-successful/ |
博客版权: | 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。 |
相关文章推荐
- Asp.net Core中使用Redis 来保存Session, 读取配置文件
- Asp.net Core 使用Redis存储Session
- 在 ASP.NET CORE 中使用 SESSION
- ASP.NET Core 使用 Redis 和 Protobuf 进行 Session 缓存
- ASP.NET Core 使用Redis存储Session
- ASP.NET CORE中使用SESSION
- Asp.net Core中使用Redis 来保存Session
- asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存
- ASP.NET Core 使用Redis存储Session
- Asp.net Core 使用Redis存储Session
- Asp.net Core中使用Session
- asp.net core 使用session
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- 详解Asp.net Core 使用Redis存储Session
- 在 ASP.NET CORE 中使用 SESSION
- Asp.net Core 使用Redis存储Session
- ASP.NET CORE中使用SESSION
- 解析Asp.net Core中使用Session的方法
- [转]Asp.net Core 使用Redis存储Session
- ASP.NET sessionState使用 [转自MSDN]