ASP.NET Core 使用Redis存储Session
2017-03-30 19:49
901 查看
首先创建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> …………6.下载Demo
相关文章推荐
- [转]Asp.net Core 使用Redis存储Session
- Asp.net Core 使用Redis存储Session
- Asp.net Core 使用Redis存储Session
- Asp.net Core 使用Redis存储Session
- 详解Asp.net Core 使用Redis存储Session
- ASP.NET Core 使用Redis存储Session
- 分布式系统状态下redis存储asp.net session使用第三方Providers驱动
- Asp.net Core中使用Redis 来保存Session
- asp.net使用redis存储session(RedisSessionStateProvider)
- ASP.NET Core 使用 Redis 和 Protobuf 进行 Session 缓存
- Asp.Net Core 集成 Hangfire 配置使用 Redis 存储
- Asp.net Core中使用Redis 来保存Session, 读取配置文件
- asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存
- 如何在ASP.NET Core中使用Redis
- asp.net core 使用 Redis 和 Protobuf
- ASP.NET下跨应用共享Session和使用Redis进行Session托管
- 在 ASP.NET CORE 中使用 SESSION
- 配置ASP.NET网站使用AppFabric Caching存储Session数据
- Configuring Redis for ASP.NET Core Session Store
- [转]Asp.net Core中使用Session