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

如何在.NET Core 2.0视图中使用Session变量?原.NET Framework 4.6可实现

在.NET Core 2.0中配置并使用Session变量

嘿,我来帮你搞定这个Session配置的问题!你之前在.NET Framework里直接用Session的方式,在.NET Core 2.0里需要多几步显式配置——毕竟Core是模块化设计,默认并没有开启Session功能。下面是具体的配置步骤:

1. 在ConfigureServices中添加Session相关服务

你需要先添加Session依赖的缓存服务,再注册Session本身。把这段代码加到你的ConfigureServices方法里(注意顺序,缓存要放在Session前面):

public void ConfigureServices(IServiceCollection services)
{
    // 1. 添加分布式内存缓存(开发环境用这个足够,生产可换成Redis等)
    services.AddDistributedMemoryCache();

    // 2. 配置并添加Session服务
    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromMinutes(30); // 设置Session过期时间
        options.Cookie.HttpOnly = true; // 禁止前端JS访问Session Cookie,提升安全性
        options.Cookie.IsEssential = true; // 标记为必要Cookie,符合隐私规范
    });

    // 你的原有代码
    services.AddMvc();
    services.AddDbContext<L2Context>(options => options.UseSqlite("Data Source=test.db"));
}

2. 在Configure中启用Session中间件

这一步非常关键,必须把UseSession()放在UseMvc()之前——中间件是按顺序执行的,只有先经过Session中间件,后续的MVC才能正常读取和写入Session。修改你的Configure方法:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // 你的其他中间件(比如UseStaticFiles、UseDeveloperExceptionPage等)
    
    // 启用Session中间件,一定要在UseMvc之前
    app.UseSession();

    // 你的MVC路由配置
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

3. 在控制器中设置Session值

比如登录逻辑里,你可以这样把ID存入Session:

public IActionResult Login(string userId)
{
    // 将ID存入Session
    HttpContext.Session.SetString("ID", userId);
    return RedirectToAction("Index");
}

4. 在视图中读取Session值

和.NET Framework类似,但要通过Context.Session来访问,比如你要显示的h2标签:

<h2>@Context.Session.GetString("ID")</h2>

为了避免Session为空时显示空白,你可以加个默认值:

<h2>@(Context.Session.GetString("ID") ?? "未登录")</h2>

额外提醒

  • 如果你是生产环境部署,建议把分布式内存缓存换成更可靠的方案(比如Redis),只需要把AddDistributedMemoryCache()替换为对应的缓存服务注册方法即可。
  • Session的Cookie配置可以根据你的需求调整,比如修改Cookie名称、域等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:04