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

.NET Core 7 MVC项目中,已弃用的Microsoft.AspNetCore.Session 2.2.0替代方案咨询

在.NET Core 7 MVC中替代弃用的Microsoft.AspNetCore.Session 2.2.0的方案

在.NET Core 7 MVC项目中,Microsoft.AspNetCore.Session 2.2.0版本被弃用后,无需依赖第三方组件——ASP.NET Core 7已将Session功能整合为框架核心组件的一部分,不再需要单独安装这个老旧的NuGet包。以下是具体的迁移和配置步骤:

核心配置步骤

  • 移除项目中旧的Microsoft.AspNetCore.Session 2.2.0包引用,确保项目依赖的是Microsoft.AspNetCore.App元包(.NET Core 3.0及以后版本默认包含,.NET 5+无需额外手动添加)。
  • 在Program.cs中配置Session服务并启用中间件:
    var builder = WebApplication.CreateBuilder(args);
    
    // 配置Session选项
    builder.Services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromMinutes(30); // 设置会话超时时长
        options.Cookie.HttpOnly = true; // 禁止前端JavaScript访问Session Cookie,提升安全性
        options.Cookie.IsEssential = true; // 标记Cookie为必要,满足GDPR合规要求
    });
    
    // 添加MVC服务
    builder.Services.AddControllersWithViews();
    
    var app = builder.Build();
    
    // 启用Session中间件(注意顺序:需放在UseRouting之后,UseAuthorization之前)
    app.UseSession();
    
    app.UseAuthorization();
    
    // 配置默认路由
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
    app.Run();
    
  • 在控制器中使用Session:
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            // 设置Session值
            HttpContext.Session.SetString("UserName", "JohnDoe");
            // 获取Session值
            var userName = HttpContext.Session.GetString("UserName");
            return View();
        }
    }
    

自定义Session存储(可选)

如果需要替换默认的内存存储(不适用于多实例部署场景),可以使用官方提供的分布式缓存扩展:

  • Redis存储:安装Microsoft.Extensions.Caching.StackExchangeRedis包,配置分布式Redis缓存后,Session会自动使用Redis存储会话数据。
  • SQL Server存储:安装Microsoft.Extensions.Caching.SqlServer包,配置SQL Server分布式缓存,实现Session数据持久化到数据库。

内容的提问来源于stack exchange,提问作者Adel Mansour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:07