【问题标题】:.NET CORE Session Sliding Expiration Problem.NET CORE 会话滑动过期问题
【发布时间】:2019-07-02 00:38:57
【问题描述】:

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

在使用应用程序时,身份 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;
        });

    }

如何为会话的cookie设置滑动过期属性?

【问题讨论】:

    标签: c# asp.net-core .net-core


    【解决方案1】:

    您的问题有点含糊,但我认为您所说的“IIS 会话超时”实际上是应用程序池停止和重新启动。基于此,您可能会使用内存中的会话存储,并且由于这是受进程限制的,因此您的会话会在应用程序池使用时消失。

    在后台,会话使用IDistributedCache 进行存储。默认提供者是DistributedMemoryCache。尽管有这个名字,但它实际上并没有分发。它只是一个使用内存的IDistributedCache 的实现,但仍然存在任何基于内存的缓存的所有问题。

    总而言之,您需要一个持久的分布式缓存解决方案,例如 SQL Server 或 Redis。请参阅:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-2.2#establish-distributed-caching-services

    一旦你设置好了,你的会话也将是持久的,只有在它们真正应该超时的时候才会超时。

    【讨论】:

    • 如你所见,问题可能是 App Pool 正在停止,因为目前没有人使用我们的系统。我将分析这种情况并评论结果。感谢您的回复
    猜你喜欢
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2018-10-07
    • 2011-12-02
    • 1970-01-01
    • 2022-08-22
    • 2019-04-03
    相关资源
    最近更新 更多