当前位置:首页 > 日记 > 正文

解析Asp.net Core中使用Session的方法

解析Asp.net Core中使用Session的方法

前言

2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年。

元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Core中引用dll,以往我们引用DLL都是直接引用,在Core里这样是不行的,必须基于NuGet添加,或者基于project.json添加,然后保存VS会启动还原类库。

第二就是使用Session的问题,Core里使用Session需要添加Session类库。

添加Session

在你的项目上基于NuGet添加:Microsoft.AspNetCore.Session。

修改startup.cs

在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(这个地方是Asp.net Core pipeline):services.AddSession();

接下来我们要告诉Asp.net Core使用内存存储Session数据,在Configure(IApplicationBuilder app,...)中添加代码:app.UserSession(); 

Session

1、在MVC Controller里使用HttpContext.Session

using Microsoft.AspNetCore.Http;public class HomeController:Controller{   public IActionResult Index()   {       HttpContext.Session.SetString("code","123456");       return View();     }    public IActionResult About()    {       ViewBag.Code=HttpContext.Session.GetString("code");       return View();    }}

2、如果不是在Controller里,你可以注入IHttpContextAccessor

public class SomeOtherClass{   private readonly IHttpContextAccessor _httpContextAccessor;   private ISession _session=> _httpContextAccessor.HttpContext.Session;   public SomeOtherClass(IHttpContextAccessor httpContextAccessor)   {      _httpContextAccessor=httpContextAccessor;          }   public void Set()   {     _session.SetString("code","123456");   }     public void Get()  {     string code = _session.GetString("code");   }}

存储复杂对象

存储对象时把对象序列化成一个json字符串存储。

public static class SessionExtensions{   public static void SetObjectAsJson(this ISession session, string key, object value)  {    session.SetString(key, JsonConvert.SerializeObject(value));  }  public static T GetObjectFromJson<T>(this ISession session, string key)  {    var value = session.GetString(key);    return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);  }}
var myComplexObject = new MyClass();HttpContext.Session.SetObjectAsJson("Test", myComplexObject);var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");

使用SQL Server或Redis存储

1、SQL Server

添加引用  "Microsoft.Extensions.Caching.SqlServer": "1.0.0"

注入:

// Microsoft SQL Server implementation of IDistributedCache.// Note that this would require setting up the session state database.services.AddSqlServerCache(o =>{  o.ConnectionString = "Server=.;Database=ASPNET5SessionState;Trusted_Connection=True;";  o.SchemaName = "dbo";  o.TableName = "Sessions";});

2、Redis

添加引用   "Microsoft.Extensions.Caching.Redis": "1.0.0"

注入:

// Redis implementation of IDistributedCache.// This will override any previously registered IDistributedCache service.services.AddSingleton<IDistributedCache, RedisCache>();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

javascript操作cookie

javascript操作cookie

操作,电脑软件,javascript,cookie,前端js cookie的使用cookie的作用:服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已 经登录网站,用户可能会得到提示,…

angular2 ng build部署后base文件

angular2 ng build部署后base文件

文件路径问题,详细,电脑软件,ng,base,最近在学习angular2中遇到了一些问题,问题如下:问题:使用angular-cli搭建的项目,执行ng build后,浏览器打开空白,发现文件的路径不对解决方案: 在package.json文件的scripts中添加命令:"build":"ng build --…

JavaScript之DOM插入更新删除_动力

JavaScript之DOM插入更新删除_动力

删除,学院,节点,动力,电脑软件,JavaScript之DOM插入更新删除,供大家参考,具体内容如下更新拿到一个DOM节点后,我们可以对它进行更新。可以直接修改节点的文本,方法有两种:一种是修改innerHTML属性,这个方式非常强大,不但可以修改一个DOM节点的文本…

ps怎样快速制作一个旋转空调按钮图

ps怎样快速制作一个旋转空调按钮图

空调,快速,按钮图标,电脑软件,ps,ps怎样快速制作一个旋转空调按钮图标?运用PHOTOSHOP软件,可以很简单的制作大家想要的照片,下面和小编一起来看看具体步骤吧。效果图:具体步骤:首先我们来分析一下。不管设计什么的时候,首先都要分析,不是拿着就开…

详谈javascript精度问题与调整

详谈javascript精度问题与调整

调整,精度问题,电脑软件,javascript,一个经典的问题:0.1+0.2==0.3答案是:false因为:0.1+0.2=0.30000000000000004第一次看到这个结果就是无比惊讶,下巴碰到地上,得深入了解下问题出在哪里,该怎么去调整。产生问题的原因在JS中数值类型就只有numbe…

VS2010/VS2013项目创建 ADO.NET连

VS2010/VS2013项目创建 ADO.NET连

项目创建,步骤,连接,详细,电脑软件,本随笔主要是对初学者通过ADO.NET连接数据库的步骤(刚开始我也诸多不顺,所以总结下,让初学者熟悉步骤)1、打开VS新建一个项目(这里的VS版本不限,建项目都是一样的步骤)VS2010版本如图:VS2013版本如图:2、非空项…

Angular动态添加、删除输入框并计

Angular动态添加、删除输入框并计

动态添加,删除,计算,输入框,实例代码,Angular动态添加、删除输入框并计算值实例代码摘要: 在学习群中交流时,有人分享了一个动态添加输入框的方法,我在其基础上进行了一些改进这个功能本身并不复杂,但还是要注意,每个ng-model的对象必须是不同…

怎么使用excel的复制公式excel的复

怎么使用excel的复制公式excel的复

方法,拖动,公式,使用方法,电脑软件,  Excel中公式的复制操作有其特殊性,对此小编从以下几个方面出发,给大家介绍一下在不同情况下公式的复制方法,希望对大家有所帮助。excel的复制公式使用方法一:直接复制公式法首先选中要复制公式的单元格或…

关于jQuery.ajax | 的jsonp碰上pos

关于jQuery.ajax | 的jsonp碰上pos

详解,电脑软件,ajax,jQuery,post,前言以前一直以为当$.ajax()的 dataType设置为jsonp时,其method(请求方法)无论怎么设置,都会变成get,直到前两天遇到了一个坑。下面来一起看看详细的介绍:关于跨域请求与jsonp 跨域:由于受到同源策略(协议、域名、…

excel中分列教程

excel中分列教程

教程,电脑软件,excel,  Excel中的分列功能具体该如何运用呢?下面是由小编分享的excel中分列教程,以供大家阅读和学习。excel中分列教程:  分列步骤1:启动Excel2003(其他版本请仿照操作),打开相应的工作表,在B列右侧插入一个空白列,用于保存分…

详解angularjs中如何实现控制器和

详解angularjs中如何实现控制器和

指令,交互,控制器,如何实现,详解,如果我们具有下面的DOM结构:<div ng-controller="MyCtrl"> <loader>滑动加载</loader> </div> 同时我们的控制器具有如下的签名:var myModule = angular.module("MyModule", []); //首先定义一个模块…

微信小程序 本地数据读取实例

微信小程序 本地数据读取实例

数据读取,实例,程序,电脑软件,微信小,微信小程序 本地数据读取实例一般情况下,小程序的utils这个文件夹下,我们可以把本地的数据写进去,封装成.js文件,提供对外暴露的接口,然后读取本地数据。如果涉及到一些针对这些数据的处理方法,也可以把方法…