Microsoft.AspNetCore.Session已弃用 .NET6如何使用Session
2024-08-19
108
在 .NET 6 中,Microsoft.AspNetCore.Session 已弃用。在 .NET 6 中,微软官方建议使用 IDistributedCache 接口来实现会话。IDistributedCache 接口提供了一个通用的 API,用于在各种缓存存储中存储数据。如果我们只是用本地内存缓存的话,实现很简单,跟使用Microsoft.AspNetCore.Session包的时候一样,只是从.NET6开始不需要安装Microsoft.AspNetCore.Session包就可以实现Session了。
所以我们可以卸载Microsoft.AspNetCore.Session这个包。
下面是一个示例使用内存缓存实现Session,在Program.cs里注册和使用服务:
builder.Services.AddSession();
app.UseSession();
然后在代码里可以这样读写Session:
Request.HttpContext.Session.SetString("key", "value");
Request.HttpContext.Session.GetString("key");
下面是Microsoft.AspNetCore.Http.SessionExtensions支持的扩展方法:
namespace Microsoft.AspNetCore.Http
{
//
// 摘要:
// Extension methods for Microsoft.AspNetCore.Http.ISession.
public static class SessionExtensions
{
//
// 摘要:
// Gets a byte-array value from Microsoft.AspNetCore.Http.ISession.
//
// 参数:
// session:
// The Microsoft.AspNetCore.Http.ISession.
//
// key:
// The key to read.
public static byte[]? Get(this ISession session, string key);
//
// 摘要:
// Gets an int value from Microsoft.AspNetCore.Http.ISession.
//
// 参数:
// session:
// The Microsoft.AspNetCore.Http.ISession.
//
// key:
// The key to read.
public static int? GetInt32(this ISession session, string key);
//
// 摘要:
// Gets a string value from Microsoft.AspNetCore.Http.ISession.
//
// 参数:
// session:
// The Microsoft.AspNetCore.Http.ISession.
//
// key:
// The key to read.
public static string? GetString(this ISession session, string key);
//
// 摘要:
// Sets an int value in the Microsoft.AspNetCore.Http.ISession.
//
// 参数:
// session:
// The Microsoft.AspNetCore.Http.ISession.
//
// key:
// The key to assign.
//
// value:
// The value to assign.
public static void SetInt32(this ISession session, string key, int value);
//
// 摘要:
// Sets a System.String value in the Microsoft.AspNetCore.Http.ISession.
//
// 参数:
// session:
// The Microsoft.AspNetCore.Http.ISession.
//
// key:
// The key to assign.
//
// value:
// The value to assign.
public static void SetString(this ISession session, string key, string value);
}
}
如果你想要存储对象的话,可以自己写一个扩展方法,然后把对象序列化后读写。
更新于:3个月前赞一波!2
相关文章
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?
- .NET9 开始删除内置的 Swagger 支持 可使用Scalar.AspNetCore替代
- .NET 9 中System.Text.Json 的新增功能
- 什么是.NET渐进式Web应用(PWA)
- .NET开发中常见的异常报错原因和解决方法?
- .NET框架和CLR的工作原理?
- ASP.NET MVC与Web Forms的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- 使用ADO.NET连接到南大通用GBase 8s数据库
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- .NET Framework被淘汰了吗?
- 强大的 .NET Mock 框架 单元测试模拟库Moq使用教程
文章评论
评论问答