• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

解析Asp.net如何使用Session

c# 搞代码 4年前 (2022-01-09) 10次浏览 已收录 0个评论

Session 是保存用户和 Web 应用的会话状态的一种方法,ASP.NET Core 提供了一个用于管理会话状态的中间件,本篇文章主要介绍了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");   }}

存储复杂对象

存储对象时把本文来源gao($daima.com搞@代@#码(网5对象序列化成一个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>();

【相关推荐】

1. ASP免费视频教程

2. ASP教程

3. 李炎恢ASP基础视频教程

以上就是解析Asp.net如何使用Session的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:解析Asp.net如何使用Session

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址