ASP.Net Core 会话
会话 Session 每一次会话都是新的 达到一个交谈 交谈的语境就是上下文
Session Key 当前会话的数据字典中,都是以Cookie的形式放到浏览器中的
在Asp.net 会话状态 在默认情况下是利用缓存的情况存储会话情况的,所以要添加AddDistributedMemoryCache用于基础内存的缓存服务
public static class Sample01 { public static void Start() { Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .ConfigureServices(collection => collection //在Asp.net 在默认情况下是利用缓存的情况存储会话情况的,所以要添加AddDistributedMemoryCache用于基础内存的缓存服务 .AddDistributedMemoryCache() .AddSession())//添加会话服务 .Configure(app => app .UseSession() .Run(ProcessAsync))) .Build() .Run(); static async Task ProcessAsync(HttpContext context) { var session = context.Session; await session.LoadAsync(); string sessionStartTime; if (session.TryGetValue("SessionStartTime", out var value)) { sessionStartTime = Encoding.UTF8.GetString(value); } else { sessionStartTime = DateTime.Now.ToString(CultureInfo.InvariantCulture); session.SetString("SessionStartTime", sessionStartTime); } context.Response.ContentType = "text/html"; await context.Response.WriteAsync($"<html><body><ul><li>Session ID:{session.Id}</li>"); await context.Response.WriteAsync($"<li>Session Start Time:{sessionStartTime}</li>"); await context.Response.WriteAsync($"<li>Current Time:{DateTime.Now}</li></ul></table></body></html>"); } } }
加上获取session key
public static class Sample02 { public static void Start() { Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .ConfigureServices(collection => collection .AddDistributedMemoryCache() .AddSession()) .Configure(app => app .UseSession() .Run(ProcessAsync))) .Build() .Run(); static async Task ProcessAsync(HttpContext context) { var session = context.Session; await session.LoadAsync(); string sessionStartTime; if (session.TryGetValue("SessionStartTime", out var value)) { sessionStartTime = Encoding.UTF8.GetString(value); } else { sessionStartTime = DateTime.Now.ToString(CultureInfo.InvariantCulture); session.SetString("SessionStartTime", sessionStartTime); } // 使用反射获取Session Key var field = typeof(DistributedSession).GetTypeInfo().GetField("_sessionKey", BindingFlags.Instance | BindingFlags.NonPublic); var sessionKey = field?.GetValue(session); context.Response.ContentType = "text/html"; await context.Response.WriteAsync($"<html><body><ul><li>Session ID:{session.Id}</li>"); await context.Response.WriteAsync($"<li>Session Key:{sessionKey}</li>"); await context.Response.WriteAsync($"<li>Session Start Time:{sessionStartTime}</li>"); await context.Response.WriteAsync($"<li>Current Time:{DateTime.Now}</li></ul></table></body></html>"); } } }
标签:
.net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!