我的问题是我无法为会话设置滑动到期配置。
使用应用程序时,身份cookie是在滑动而不是到期的,但会话不滑动,IIS会话超时后,会话正在续签,并且会话数据被清除。
这是我的启动代码:
public void ConfigureServices(IServiceCollection services)
{
// some other configurations..
services.ConfigureApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromHours(6);
options.LoginPath = "/Auth/Login";
options.AccessDeniedPath = "/Dashboard";
options.LogoutPath = "/Auth/Logout";
options.SlidingExpiration = true;
options.Cookie.IsEssential = true;
});
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromHours(6);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
如何将滑动到期属性设置为Session的Cookie?
您的问题有些模糊,但是我认为您所说的" IIS会话超时"实际上是App Pool停止和重新启动。基于此,您可能会使用内存中的会话存储,并且由于限制了过程,因此您的会话会在应用程序池时消失。
在引擎盖下,会议利用IDistributedCache
进行存储。默认提供商是DistributedMemoryCache
。尽管有名字,但实际上并未分发。这只是使用内存的IDistributedCache
的实现,但仍然遭受任何基于内存的缓存的所有问题。
长而简短,您需要一个持续的分布式缓存解决方案,例如SQL Server或Redis。请参阅:https://learn.microsoft.com/en-us/aspnet/core/performance/caching/caching/distributed?view = ateaspnetcore-2#establish-distribed-caching-caching-services.
设置了一个,您的会议也将是持久的,只有在他们实际应该应该时才会出现。