ASP.NET Core Razor Page中如何在分部页访问Session?
在Razor分部页访问Session中的用户名解决方案
确认Session服务已正确配置
在ASP.NET Core项目的Program.cs中,必须先注册Session服务并启用中间件:// 注册Session服务 builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(30); // 设置会话超时时间 options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); // 启用Session中间件(需放在UseRouting之后,UseAuthorization之前) app.UseSession();在Razor分部页中直接读取Session值
分部页可以通过Context.Session直接访问会话数据,示例代码如下:@{ // 读取Session中的用户名,为空时显示默认文本 string userName = Context.Session.GetString("UserName") ?? "未登录用户"; } <div class="user-info"> 欢迎登录:@userName </div>也可以添加判断逻辑,针对未登录状态做处理:
@{ string userName = Context.Session.GetString("UserName"); } @if (!string.IsNullOrEmpty(userName)) { <p>您好,@userName!</p> } else { <p>请先登录系统</p> }排查常见问题
- 确保Session键名完全一致:存储时用的是
"UserName",读取时要严格匹配大小写。 - 验证登录逻辑是否成功写入Session:可以在登录后的主页面先测试读取
Context.Session.GetString("UserName"),确认值已正确存入。 - 若使用视图组件(View Component),访问Session的方式与分部页一致,同样通过
Context.Session获取值。
- 确保Session键名完全一致:存储时用的是
内容的提问来源于stack exchange,提问作者Mizanur Rahaman
相关产品推荐
相关产品推荐

