.NET核心会话滑动到期问题



我的问题是我无法为会话设置滑动到期配置。

使用应用程序时,身份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.

设置了一个,您的会议也将是持久的,只有在他们实际应该应该时才会出现。

最新更新