.net core中使用Session保存及传递数据
本文介绍的是.Net Core中如何启用Session以及解决Session无法正常保存的问题,属于入门级经验。供各位参考!
网站开发时,我们会用到Session,.Net Core 2.2默认是无法直接使用Session,需要进行一定的设置,首先是修改Startup.cs文件:
一、ConfigureServices函数中添加:
services.AddSession();
二、Configure函数中添加
app.UseSession();
到这里算是开启了Session功能
然而,仅能在当前页面使用,无法跨页使用。
表现为:Login页面已经通过Session.SetString保存了数据,调试模式下也确实能看到数据已经保存到HttpContext.Session中了,但是转跳到其他需要验证Session页面就发现HttpContext.Session中并没有任何数据。
原因是在Startup.cs文件中的ConfigureServices配置中默认设置如下:
options.CheckConsentNeeded = context => true;
当前设置标示在用户访问页面时提示类似“本站需要保存Cookies,是否同意”,只有用户点同意了才可以用Cookies,否则就不能正常使用Cookies,而Session是以来Cookies的,因此导致Session也会受影响。
当前设置状态下,我们还需要完善_CookieConsentPartial.cshtml的代码,因为系统生成的代码不完整。具体路径及默认代码如下图:
如果不需要cookie提示,我们只需要把它修改为如下:
options.CheckConsentNeeded = context => false;
这样子就解决了session无法正常保存和使用的问题。