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

如何在.Net Core中创建Cookieless Session(无Cookie会话)

.NET 5/.NET Core 中配置 Cookieless 无Cookie会话的正确方式

和 ASP.NET MVC 5 及更早版本依赖 Web.config 配置 sessionState 节点的逻辑不同,.NET Core(包括 .NET 5 及后续所有版本)的会话配置全部在服务注册管道中完成,具体步骤如下:


配置步骤

1. 注册 Session 服务并启用无Cookie模式

找到项目的启动文件:

  • .NET 5 是 Startup.cs 文件的 ConfigureServices 方法
  • .NET 6+ 是顶层语句的 Program.cs 文件

在服务注册阶段添加Session服务,核心是设置 Cookie.UseCookies = CookieUsePolicy.Never 强制禁用Cookie,走URL传递会话ID:

services.AddSession(options =>
{
    // 会话空闲过期时间,按需调整
    options.IdleTimeout = TimeSpan.FromMinutes(20);
    options.Cookie.Name = ".YourApp.SessionId";
    options.Cookie.IsEssential = true;
    // 核心配置:强制不使用Cookie,启用Cookieless模式
    options.Cookie.UseCookies = CookieUsePolicy.Never;
    // 可选安全配置,按需调整
    options.Cookie.HttpOnly = true;
    options.Cookie.SameSite = SameSiteMode.None;
    options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
});

如果你用的是空白项目模板,需要先安装NuGet包:Microsoft.AspNetCore.Session

2. 启用 Session 中间件

在中间件管道中注册Session,注意顺序不能乱:必须放在UseRouting之后、UseAuthorization/端点映射之前:

// .NET 5 Startup.cs Configure方法 或 .NET 6+ Program.cs的中间件配置段
app.UseRouting();
// 必须放在此处
app.UseSession();
app.UseAuthorization();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

注意事项

  • Cookieless 会话的安全性远低于基于Cookie的会话:URL携带的Session ID很容易被日志记录、中间人截获或者用户误分享,仅建议在完全无法使用Cookie的极端场景下启用
  • 配置生效后,.NET Core 中间件会自动在URL中插入会话ID片段,也会自动从请求URL中提取会话ID绑定上下文,无需手动处理会话ID的传递逻辑

内容的提问来源于stack exchange,提问作者Pradip Patil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:51:03