闽公网安备 35020302035485号
中间件的价值在于可以在 request -> response 的过程中做一些定制化的操作,比如说:监视数据,切换路由,修改流转过程中的消息体,通常来说:中间件是以链式的方式灌入到 ASP.Net Core 的 pipeline 管道中,这篇文章主要讨论如何使用 Session 中间件。
Install-Package Microsoft.AspNetCore.Session
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);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSession();
app.UseHttpContextItemsMiddleware();
app.UseMvc();
}
public IActionResult Index()
{
HttpContext.Session.SetString("Message", "Hello World!");
HttpContext.Session.SetInt32("Year", 2019);
return View();
}
public IActionResult About()
{
ViewBag.Message = HttpContext.Session.GetString("Message");
ViewBag.Year = HttpContext.Session.GetInt32("Year");
return View();
}
如果你想设置或者获取属于其他类型的数据,可以在 ISession 接口上新增一个扩展方法并且自己来实现序列化逻辑,从 session 中设置或者获取 复杂类型时,可以把这个类型序列化为 json,或者 json 反序列化为 model。