You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中设置Session超时为30分钟不生效问题求助

.NET 6 Session超时设置未生效的解决方法

你遇到的Session设置30分钟超时却提前失效的问题,通常由以下几个原因导致,对应解决方式如下:

1. 中间件调用顺序错误

Session中间件的位置必须严格遵循在UseRouting()之后,UseAuthorization()和UseEndpoints()之前,否则Session配置不会生效。正确的中间件注册顺序示例:

var builder = WebApplication.CreateBuilder(args);

// 服务注册代码
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
});

var app = builder.Build();

// 中间件顺序
app.UseRouting();
app.UseSession(); // 关键:必须放在此位置
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

app.Run();

2. 未同步配置Session Cookie的过期时间

Session依赖Cookie存储会话标识,默认Cookie的过期时间为20分钟,会优先覆盖你设置的Session超时时间。需要在AddSession中同步配置Cookie的过期时间,确保与IdleTimeout一致:

builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
    options.Cookie.Expires = TimeSpan.FromMinutes(30); // 与Session超时保持一致
});

3. 排查其他代码干扰

检查项目中是否存在手动修改Session过期时间的代码(比如在Controller或过滤器中调用Session.SetTimeout()),或者有第三方中间件干扰了Session的默认配置。

内容的提问来源于stack exchange,提问作者Thomas Charles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:50:14