我记得我们在ASP.NET中使用了session.timeout来更改会话超时,如果不更改的话,会话超时是20分钟。
我尝试在Startup.cs中更改ASP.NET Core 3.1中的会话超时,但没有任何React。我为操作员使用标识,并将空闲超时设置为5小时“我认为”,但操作员在1-2分钟后注销,并应重新登录数百次才能完成一篇文章。
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromHours(5);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
我错过了什么?
3条答案
按热度按时间xcitsw881#
为了在ASP.NET核心中使用会话状态,您需要将会话中间件添加到管道中。
**要点:**中间件的顺序是关键,在UseRouting和UseEndpoints之间调用UseSession。
更多信息:MSDN
igetnqfo2#
正如您所说,您正在使用标识,那么请在
services.AddIdentity()
类中的startup.cs
之后使用以下代码。7fhtutme3#
前面的代码设置了一个短超时以简化测试。
中间件的顺序很重要。在UseRouting之后和UseEndpoints之前调用UseSession。请参阅中间件排序。
HttpContext.Session
在配置会话状态后可用。在调用
UseSession
之前无法访问HttpContext.Session
。在应用开始写入响应流后,无法创建具有新会话Cookie的新会话。该异常记录在Web服务器日志中,不会显示在浏览器中。