一、简介


1、因为Net Core默认是没有启动Session功能的,如果需要使用,需要通过代码开启。

2、本篇说明如果启用默认Session实现,即Session存到内存中。

3、本篇扩展说明如何用Redis做Sessoin服务器,实现分布式。

二、开启默认Session功能


1、编写一个api,先写Session,再读取Session返回。

2、Startup未启动Session功能,查看效果,报错。

3、在Startup中添加两处启用Session代码,查看效果,正常。这里有知识点,UseSession需要写在UseMvc之前,否则会报错。

4、UseSession写在UseMvc之一,再查看效果,报错。

api代码

    public class OneController : Controller
{
public string GetString(string id)
{
HttpContext.Session.SetString(id, Guid.NewGuid().ToString());
return HttpContext.Session.GetString(id);
}
}

未启用Session,查看效果

启用Session,代码简单,自己敲就行。

查看效果

UseSession往后放

查看结果,又出错了

三、使用Redis做Session服务


1、Net Core默认已经做了Session的Redis实现,只需要开启就可以了。

2、先要下载安装Redis,如果没有,就用楼主的就行了,连接在代码里,只是用来测试用。Redis默认是不需要用户名密码的。

3、再次是需要下载个Redis客户端,我使用的是RedisDesktopManager

4、在Startup中添加Redis配置信息。

5、查看运行效果:Session创建前后,Redis数据库的差异。

Startup配置代码

        public void ConfigureServices(IServiceCollection services)
{
//就这一行代码就行了。
services.AddDistributedRedisCache(option => option.Configuration = "bitdao.cn:1012,abortConnect=false,connectRetry=3,connectTimeout=3000,defaultDatabase=1,syncTimeout=3000,version=3.2.1,responseTimeout=3000");
services.AddSession();
services.AddMvc();
}

Session创建前

访问API创建 Session

创建Session之后

四、Redis做Session服务的意义


1、Session的原理是在Cookies存一个SessionId。

2、分布式部署时,服务器A写一个Session时,只存在A服务器的内存中。用户第二次请求时,可能会访问到服务器B,只时候用SessionId去读取Session是空值。

3、如果用Redis做Session服务器,无论用户访问被分配到哪台服务器,都会用SessionId去Redis取Session,都能取到值。

见图如下

五、总结


1、Net Core默认没有启动Sessoin,需要正确配置启动Session

2、分布式部署时,可以使用Redis做Session服务器,Net Core已经实现,一行配置代码即可。

最新文章

  1. MVP解析
  2. 对session的理解
  3. 总结C#保留小数位数及百分号处理
  4. Java对象序列化---转载
  5. ACM2 斐波那契数列
  6. MessageFlood 分类: 串 2015-06-18 17:00 10人阅读 评论(0) 收藏
  7. dubbo 运行过程
  8. Virtual Box 工具栏(菜单栏)消失的解决方法
  9. PHP CURL 代理发送数据
  10. Java学习笔记——设计模式之一.简单工厂
  11. Hibernate的注解方法的使用
  12. linux内核代码的编写初步以及makefile的配置
  13. Hashmap误区
  14. MySQL 8 配置文件
  15. C++解决case中不能定义局部变量问题
  16. MySql 在cmd下的学习笔记 —— 有关储存过程的操作(procedure)
  17. 洛谷P1443马的遍历
  18. numpy和pandas简单使用
  19. destoon源码解读
  20. 局域网传输-LED灯搭建局域网:数据传输可达每秒3Gb

热门文章

  1. Intellij IDEA使用Maven搭建spark开发环境(scala)
  2. Spring配置连接池
  3. .net使用httpHandler添加图片防盗链
  4. iOS - push 或 pop或点击导航栏返回pop指定导航控制器
  5. jQuery中animate()对Firefox无效的解决办法
  6. 别人家的PS系列又来了!!!
  7. 创建WRAPPER时, SQL20076N 未对指定的操作启用数据库的实例。
  8. ubuntu14.04 Samba服务无法访问 可能没有权限 指定的网络名不再可用的问题
  9. vue移动端h5页面根据屏幕适配的四种方案
  10. hdu-1060(数学问题)