如何在ASP.NET Core中使用Session的示例代码
ASP.NETCore是一个跨平台,开源的,轻量级,高性能并且高度模块化的web框架,Session可以实现用户信息存储从而可以在同一个客户端的多次请求之间实现用户追踪,在ASP.NetCore中可以使用Microsoft.AspNetCore.Session中间件来启用Session机制。
中间件的价值在于可以在request->response的过程中做一些定制化的操作,比如说:监视数据,切换路由,修改流转过程中的消息体,通常来说:中间件是以链式的方式灌入到ASP.NetCore的pipeline管道中,这篇文章主要讨论如何使用Session中间件。
安装Session中间件
要想使用session中间件,你可以使用VisualStudio2019中的NuGetpackagemanager可视化界面进行安装,或者通过NuGetpackagemanagerconsole命令行输入如下命令:
Install-PackageMicrosoft.AspNetCore.Session
配置session中间件
现在Microsoft.AspNetCore.Session已经成功安装到你的项目中了,接下来可以将它添加到ASP.NetCorepipeline中,请注意:为了能够启动Session,你必须要使用一个实现了IDistributedCache接口的cachestore来作为session的底层存储,然后你还要在ConfigureServices方法下调用AddSession方法将其塞入IOC容器,最后在Startup.Configure方法下使用UseSession将其塞入到request->response请求管道中,具体代码如下:
publicvoidConfigureServices(IServiceCollectionservices) { 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。
publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv) { 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中。
publicIActionResultIndex() { HttpContext.Session.SetString("Message","HelloWorld!"); HttpContext.Session.SetInt32("Year",2019); returnView(); }
接下来再看看如何从session中获取数据,如下代码所示:
publicIActionResultAbout() { ViewBag.Message=HttpContext.Session.GetString("Message"); ViewBag.Year=HttpContext.Session.GetInt32("Year"); returnView(); }
如果你想设置或者获取属于其他类型的数据,可以在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.NETCore中使用Session的示例代码的文章就介绍到这了,更多相关ASP.NETCore使用Session内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。