博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NetCore入门篇:(九)Net Core项目使用Session及用Redis做分布式
阅读量:6238 次
发布时间:2019-06-22

本文共 1652 字,大约阅读时间需要 5 分钟。

一、简介


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已经实现,一行配置代码即可。

 

转载于:https://www.cnblogs.com/chenyinxin/p/8990756.html

你可能感兴趣的文章
10个php中的$_SERVER函数
查看>>
美团实时计算平台实践与应用
查看>>
[翻译-Shiro]-10分钟教会你Apache Shiro
查看>>
糗事百科客户端
查看>>
ZUUIRevealController
查看>>
开源 java CMS - FreeCMS2.0发布。
查看>>
android handler 如何规避内存泄漏
查看>>
使用K个数字(< 10)组成和为N的组合
查看>>
python good link
查看>>
关于SQL的
查看>>
Ubuntu下安装yii
查看>>
[Android]让RemoteControlClient显示Music Album
查看>>
01-UI基础-03UIImageView
查看>>
JSP页面ajax提交登录数据demo
查看>>
软件自动化测试框架STAF
查看>>
Hadoop 多表连接
查看>>
使用maven下载jar包,使用ant打包。yqxt项目的安装。
查看>>
Ubuntu 一键安装openresty
查看>>
dlmalloc
查看>>
学习与准备的一些资源
查看>>