广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >如何在ASP.NET Core中使用Session的示例代码
  • 779
分享到

如何在ASP.NET Core中使用Session的示例代码

netASP.NET示例coresessionASP 2022-06-07 22:06:15 779人浏览 泡泡鱼
摘要

ASP.net core 是一个跨平台,开源的,轻量级,高性能 并且 高度模块化的WEB框架,Session 可以实现用户信息存储从而可以在同一个客户端的多次请求之间实现用户追

ASP.net core 是一个跨平台,开源的,轻量级,高性能 并且 高度模块化的WEB框架,Session 可以实现用户信息存储从而可以在同一个客户端的多次请求之间实现用户追踪,在 ASP.net core 中可以使用 Microsoft.Aspnetcore.Session 中间件来启用 Session 机制。

中间件的价值在于可以在 request -> response 的过程中做一些定制化的操作,比如说:监视数据,切换路由,修改流转过程中的消息体,通常来说:中间件是以链式的方式灌入到 ASP.Net Core 的 pipeline 管道中,这篇文章主要讨论如何使用 Session 中间件。

安装 Session 中间件

要想使用 session 中间件,你可以使用 Visual Studio 2019 中的 NuGet package manager 可视化界面进行安装,或者通过 NuGet package manager console 命令行输入如下命令:


Install-Package Microsoft.AspNetCore.Session
配置 session 中间件

现在 Microsoft.AspNetCore.Session 已经成功安装到你的项目中了,接下来可以将它添加到 asp.net Core pipeline 中,请注意:为了能够启动 Session,你必须要使用一个 实现了 IDistributedCache 接口的 cache store 来作为 session 的底层存储,然后你还要在 ConfigureServices 方法下调用 AddSession 方法将其塞入 ioc 容器,最后在 Startup.Configure 方法下使用 UseSession 将其塞入到 request -> response 请求管道中,具体代码如下:


  public void ConfigureServices(IServiceCollection services)
  {
    services.ADDDistributedMemoryCache();
    services.AddSession(options =>
    {
      options.IdleTimeout = TimeSpan.FromSeconds(5);
      options.Cookie.HttpOnly = true;
      options.Cookie.IsEssential = true;
    });
    services.Addmvc()
      .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
  }

一旦 session 中间件加入到了 IOC 容器之后,接下来可以在 Configure 方法中调用 UseSession 来启动 session。


  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    app.UsehttpsRedirection();
    app.UseStaticFiles();
    app.UseSession();
    app.UseHttpContextItemsMiddleware();
    app.UseMvc();
  }
存储和获取 session

你可以使用 Set, SetInt32 和 SetString 这三个方法来实现 Session 的存储,这些方法有两个参数,一个是键,一个是键对应的数据,而且 Set 方法的 value 对应的是 byte[] 形式。

类似的,你可以使用 Get,GetInt32 和 GetString 方法来实现 session 的读取,同时 Get 方法接收一个 string 格式的 key,并且返回 byte[] 数组,要使用这些扩展方法,你需要将 Microsoft.AspNetCore.Http 引用到项目中。

下面的代码展示了如何将数据添加到 session 中。


public IActionResult Index()
{
  HttpContext.Session.SetString("Message", "Hello World!");
  HttpContext.Session.SetInt32("Year", 2019);
  return View();
}

接下来再看看如何从 session 中获取数据,如下代码所示:


public IActionResult About()
{
  ViewBag.Message = HttpContext.Session.GetString("Message");
  ViewBag.Year = HttpContext.Session.GetInt32("Year");
  return View();
}

如果你想设置或者获取属于其他类型的数据,可以在 ISession 接口上新增一个扩展方法并且自己来实现序列化逻辑,从 session 中设置或者获取 复杂类型时,可以把这个类型序列化为 JSON,或者 json 反序列化为 model。

还有一点要特别注意,默认的 session 是基于内存的,也就是说进程关闭了 session 就会丢失,如果你想实现session持久化,可以采用 sqlserver 或者 Redis

译文链接:https://www.infoworld.com/article/3411563/how-to-work-with-session-state-in-aspnet-core.html

到此这篇关于如何在ASP.net Core中使用Session的示例代码的文章就介绍到这了,更多相关ASP.NET Core使用Session内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文章:Asp.Net Core中基于Session的身份验证的实现浅谈ASP.NET Core中间件实现分布式 Session解析Asp.net Core中使用Session的方法详解Asp.net Core 使用Redis存储Session


--结束END--

本文标题: 如何在ASP.NET Core中使用Session的示例代码

本文链接: https://www.lsjlt.com/news/30790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作