.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.Session2.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
相关产品推荐
相关产品推荐

