华域联盟 .Net 如何在ASP.NET Core中使用Session的示例代码

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

如何在ASP.NET Core中使用Session的示例代码
 更新时间:2021年01月22日 09:34:34   作者:一线码农  

这篇文章主要介绍了如何在ASP.NET Core中使用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。
译文链接: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 WebApi版本控制的实现ASP.NET Core对不同类型的用户进行区别限流详解详解如何在ASP.NET Core中编写高效的控制器详解如何在ASP.NET Core中使用IHttpClientFactoryASP.NET Core 使用Cookie验证身份的示例代码如何在ASP.Net Core使用分布式缓存的实现ASP.NET Core中如何实现重定向详解Asp.Net Core中发送Email的完整步骤asp.net core集成CKEditor实现图片上传功能的示例代码ASP.NET Core中实现全局异常拦截的完整步骤如何在Asp.Net Core中集成Refit

ASP.NET
Core
Session

相关文章
ASP.NET笔记之 Request 、Response 与Server的使用本篇文章小编为大家介绍,ASP.NET笔记之 Request 、Response 与Server的使用。需要的朋友参考下 2013-04-04
.Net Core3.0 配置Configuration的实现这篇文章主要介绍了.Net Core3.0 配置Configuration的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2020-10-10
asp.net(c#)下读取word文档的方法小结asp.net(c#)下读取word文档的方法小结,需要的朋友可以参考下。 2011-07-07
微信公众平台开发之认证"成为开发者".Net代码解析这篇文章主要为大家详细解析了微信公众平台开发之认证"成为开发者".Net代码,感兴趣的小伙伴们可以参考一下 2016-06-06
.Net获取IP地址的方法这篇文章主要介绍了.Net获取IP地址的方法,本文给大家介绍的非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 2020-01-01
GridView分页的实现(通用分页模板)要在GridView中加入AllowPaging=true,一页数据多少行PageSize=10分页时触发的事件OnPageIndexChanging等等,感兴趣的朋友可以了解下本文,希望对你有所帮助 2013-04-04
vs2010无法添加dll引用的处理方法vs2010无法添加dll引用的处理方法,需要的朋友可以参考一下 2013-03-03
asp.net 动态创建TextBox控件及状态数据如何加载接着上文Asp.net TextBox的TextChanged事件你真的清楚吗?这里我们来说说状态数据时如何加载的,需要的朋友可以参考下 2012-12-12
使用UserControl做网站导航条的思路 分析使用UserControl做网站导航条的思路 分析... 2007-09-09
ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码管理系统退出登陆后,将网址重新输入后还会看到用户登陆后的界面,为了解决这个问题,我采用了以下方法,需要的朋友可以参考下 2012-05-05

最新评论

本文由 华域联盟 原创撰写:华域联盟 » 如何在ASP.NET Core中使用Session的示例代码

转载请保留出处和原文链接:https://www.cnhackhy.com/4999.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者:

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部