如安在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。

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

到此这篇关于如安在ASP.NET Core中利用Session的示例代码的文章就先容到这了,更多相关ASP.NET Core利用Session内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!

您大概感乐趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdxwg.html