zoukankan      html  css  js  c++  java
  • .NetCore Session.Redis

    首先创建ASP.NET CORE Web项目,然后按如下顺序操作。
    1.添加nuget程序包:

                Microsoft.AspNetCore.Session;
                Microsoft.AspNetCore.DataProtection.Redis;
                Microsoft.Extensions.Caching.Redis.Core;
                Microsoft.Extensions.Caching.Redis
                Microsoft.AspNetCore.Http;     //使用Session时有扩展方法

    2.在appsettings.json中添加Redis配置:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "WebConfig": {
        "Redis": {
          "Connection": "127.0.0.1:6379,defaultdatabase=1",
          //"Connection": "127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase=5",
          "InstanceName": "Core_Redis_Session_"
        },
        "SessionTimeOut": "30" //session过期时长,分钟
      },
      "AllowedHosts": "*"
    }
    

      3.在startup.cs类中,按如下例子添加代码:

            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
             /*
              *  Microsoft.AspNetCore.Session;
              *  Microsoft.AspNetCore.DataProtection.Redis;
              *  Microsoft.Extensions.Caching.Redis.Core;
              *  Microsoft.Extensions.Caching.Redis
              *  Microsoft.AspNetCore.Http;     //使用Session时有扩展方法
              */
    
                #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)
            {
                app.UseSession();
    
                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>
    

      

    源代码下载:https://github.com/842549829/Session.Redis.Web

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/liuxiaoji/p/9259747.html
Copyright © 2011-2022 走看看