NetCore入门篇:(九)Net Core项目使用Session及用Redis做分布式
一、简介
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已经实现,一行配置代码即可。
NetCore入门篇:(九)Net Core项目使用Session及用Redis做分布式的更多相关文章
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- 【SSRS】入门篇(一) -- 创建SSRS项目
原文:[SSRS]入门篇(一) -- 创建SSRS项目 在本篇中,您将学习如何在 SQL Server Data Tools (SSDT) 中创建报表服务器项目. 报表服务器项目用于创建在报表服务器中 ...
- .net core 3.0 Signalr - 04 使用Redis做底板来支持横向扩展
在实际的系统中,可能需要多台机器部署;然而,Signalr的连接信息是跟站点走的,举个例子 推送系统部署了A.B两个服务器,张三访问A服务器,李四访问B服务器,当张三通过A服务器向李四推送的时候,A服 ...
- NetCore入门篇:(八)Net Core项目使用Controller之三
一.简介 1.本节主要说明入参的几种接收方式 二.不限定模式 1.定义一个id入参与一个model入参. 2.get\post分别查看访问效果. api代码 public class OneContr ...
- NetCore入门篇:(六)Net Core项目使用Controller之一
一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择完全抛弃传统mvc模式,使用html + webapi模 ...
- NetCore入门篇:(三)Net Core项目Nuget及Bower包管理
一.创建项目 1.如何创建项目,参照上一篇文章 二.程序包介绍 1.Net Core的程序包分前后端两种,后端用nuget,前端用bower. 2.与Net 不同,Net Core引用nuget包时, ...
- NetCore入门篇:(二)Net Core项目创建
一.新建项目 1.选择菜单:文件 -> 新建 -> 项目 2.选择模板:NET Core -> ASP.NET Core Web 应用程序,输入名称 3.选择框架:ASP.NET C ...
- NetCore入门篇:(十)Net Core项目使用Cookies
一.简介 1.Net Core可以直接使用Cookies,但是调用方式有些区别. 2.Net Core将Request和Response分开实现. 二.基本读写Cookies操作 1.写一个基本的读写 ...
随机推荐
- GridView上同时定义了 DataSource 和 DataSourceId
VS平台下ASP.NET网站的建立,我们常常要跟数据库打交道,获取数据库的信息,通过GridView控件进行显示,需要为GridView指定 DataSourceId或者DataSource,切忌不可 ...
- [leetcode]159. Longest Substring with At Most Two Distinct Characters至多包含两种字符的最长子串
Given a string s , find the length of the longest substring t that contains at most 2 distinct char ...
- linux下给php安装memcached及memcache扩展(转)
http://kimi.it/257.html (另外的方法)linux安装memcached及memcache扩展一.安装libevent函数库下载地址:http://libevent.org默认被 ...
- 淘宝、天猫又开源了一个动态化、高性能的UI框架
前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 及其对应的 Android库 vlayout,该解决方案在手机淘宝.天猫 Android ...
- asp.net (jquery easy-ui datagrid)通用Excel文件导出(NPOI)
http://www.cnblogs.com/datacool/archive/2013/03/12/easy-ui_datagrid_export_excel_asp_net.html
- Can't use Subversion command line client: svn. Errors found while svn working copies detection.
idea 报错: Can't use Subversion command line client: svn. Errors found while svn working copies detect ...
- part1:2-嵌入式系统简单概念
1.3个特点+1个性质:以应用为中心.软硬件可裁剪.对功能-体积-功耗等有严格要求:专用的计算机系统. 应用领域: 软硬件可裁剪,是什么结构让嵌入式系统具备了这样的特点? 嵌入式系统的体系结构:硬件: ...
- Android窗口背景的优化
视图有背景,每个窗口也是有背景的.每一Activity是一个窗口,每一个Activity都有不同得背景.界面的绘画顺序如下:窗口——跟视图 ——子视图.当我们的跟视图已经覆盖了整个窗口的时候 ,程序还 ...
- 2018.08.28 洛谷P4360 [CEOI2004]锯木厂选址(斜率优化dp)
传送门 一道斜率优化dp入门题. 是这样的没错... 我们用dis[i]表示i到第三个锯木厂的距离,sum[i]表示前i棵树的总重量,w[i]为第i棵树的重量,于是发现如果令第一个锯木厂地址为i,第二 ...
- 2018.07.17 HAOI2016 找相同字符(SAM)
传送门 就是给两个字符串,让你求公共字串的个数. 本来大佬们都是用的广义后缀自动机,但我感觉后缀自动机已经可以做这道题了.我们对其中一个字串建出后缀自动机,然后用另外一个后缀自动机在上面统计贡献即可. ...