asp.net core session的使用
Session介绍
本文假设读者已经了解Session的概念和作用,并且在传统的.net framework平台上使用过。
Asp.net core 1.0好像需要单独安装,在nuget控制台,选择你的web项目执行以下命令:
Install-Package Microsoft.AspNetCore.Session
如果需要卸载,在nuget控制台,选择具体项目,执行以下命令:
Uninstall-Package Microsoft.AspNetCore.Session
Asp.net core 2.0已经集成了Session组件,无需单独安装。
Asp.net core中的session使用方法跟传统的asp.net不一样,它内置了两个方法供我们调用:
void Set(string key, byte[] value);
bool TryGetValue(string key, out byte[] value);
这两个方法的第一个参数都是key,第二个参数都是value,且value是一个byte[]类型的数据。所以在使用的时候,我们还需要做转换,使用起来很不方便。
针对这一点,session提供了扩展方法,但是需要引用Microsoft.AspNetCore.Http命名空间。然后再使用扩展方法:
public static byte[] Get(this ISession session, string key);
public static int? GetInt32(this ISession session, string key);
public static string GetString(this ISession session, string key);
public static void SetInt32(this ISession session, string key, int value);
public static void SetString(this ISession session, string key, string value);
使用方法如下:
HttpContext.Session.SetString("password", "");
var password = HttpContext.Session.GetString("password");
Session使用
打开Startup.cs文件
1.在ConfigureServices方法里面添加:
services.AddSession();
2.在Configure方法里面添加:
app.UseSession();
3.新建控制器SessionController,添加如下代码:
/// <summary>
/// 测试Session
/// </summary>
/// <returns></returns>
public IActionResult Index()
{
var username = "subendong";
var bytes = System.Text.Encoding.UTF8.GetBytes(username);
HttpContext.Session.Set("username", bytes); Byte[] bytesTemp;
HttpContext.Session.TryGetValue("username", out bytesTemp);
var usernameTemp = System.Text.Encoding.UTF8.GetString(bytesTemp); //扩展方法的使用
HttpContext.Session.SetString("password", "");
var password = HttpContext.Session.GetString("password"); var data = new {
usernameTemp,
password
}; return Json(data);
}
4.F5运行,输入地址:http://localhost/session,即可查看正确输出:
{"usernameTemp":"subendong","password":"123456"}
5.如果第一步和第二步不做的话,直接使用session,会报错:
InvalidOperationException: Session has not been configured for this application or request
asp.net core session的使用的更多相关文章
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- asp.net core session丢失问题排查
最近公司采用asp.net core的站点在外测环境中,总是发现存在session丢失的情况.排查了好久,客户端.AspNetCore.Session的cookie未丢失,session的分布式缓存采 ...
- asp.net core session使用
一.配置回话状态 Microsoft.AspNetCore.App metapackage 中包含的 Microsoft.AspNetCore.Session 包提供中间件来管理会话状态. 若要启用会 ...
- asp.net core Session的测试使用心得及注意事项
sp.net-core中Session是以中间件的形式注册使用的.不比asp.net中的使用,直接使用Session就行. 首先在.net-core框架中注入Session中间件,首先在Configu ...
- Asp.net Core Session 存储任意对象
using Microsoft.AspNetCore.Http; using Newtonsoft.Json; public static class SessionExtensions { publ ...
- ASP.NET Core 使用 Redis 和 Protobuf 进行 Session 缓存
前言 上篇博文介绍了怎么样在 asp.net core 中使用中间件,以及如何自定义中间件.项目中刚好也用到了Redis,所以本篇就介绍下怎么样在 asp.net core 中使用 Redis 进行资 ...
- ASP.NET Core 2 学习笔记(十一)Cookies & Session
基本上HTTP是没有记录状态的协定,但可以通过Cookies将Request来源区分出来,并将部分数据暂存于Cookies及Session,是写网站常用的用户数据暂存方式.本篇将介绍如何在ASP.NE ...
- asp.net core 使用 Redis 和 Protobuf
asp.net core 使用 Redis 和 Protobuf 前言 上篇博文介绍了怎么样在 asp.net core 中使用中间件,以及如何自定义中间件.项目中刚好也用到了Redis,所以本篇就介 ...
- 为什么我的会话状态在ASP.NET Core中不工作了?
原文:Why isn't my session state working in ASP.NET Core? Session state, GDPR, and non-essential cookie ...
随机推荐
- Vue加载json文件
一.在build/dev-server.js文件里 var app = express() 这句代码后面添加如下(旧版): var appData = require('../address.json ...
- Python基础(协程函数、内置函数、递归、模块和包)-day05
写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04 ...
- HashMap分析及散列的冲突处理
1,Hashing过程 像二分查找.AVL树查找,这些查找算法的时间复杂度为O(logn),而对于哈希表而言,我们一般说它的查找时间复杂度为O(1).那它是怎么实现的呢?这就是一个Hashing过程. ...
- dos 设置 Windows 网络命令
dos 设置Windows 命令: netsh interface ip set address name="本地连接" source=static addr=172.16.12. ...
- Python人工智能之路 - 第四篇 : jieba gensim 最好别分家之最简单的相似度实现
简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字",也有可能是"你是谁","你叫啥"之类的,这就引出了人工智能 ...
- gflags命令行参数解析
gflags库是google开源的命令行参数解析工具. 安装 官方没有提供二进制库,但是Debian/Ubuntu平台本身提供了二进制库,可以直接git clone https://github.co ...
- js中获取时间new date()的用法和获取时间戳
获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getF ...
- Informatic学习总结_day02_增量抽取
SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, EMP.MGR, EMP.HIREDATE, EMP.SAL, EMP.COMM, EMP.DEPTNO FROM EMP ...
- 基于XML搭建Dubbo项目
(1).新建一个普通Maven项目,用于存放一些公共服务接口及公共的Bean等. 公共Bean: package cn.coreqi.entities; import java.io.Serializ ...
- SpringBoot定制错误页面
(1)有模板引擎的情况下,例如404错误,将会在thymeleaf的templates的error下寻找404.html,如果找不到再寻找4xx.html *所有4开头的错误状态码如果找不到特定的ht ...