session - 如何在 asp.net core 2.2.0 版本中创建对象值的会话?
问题描述
在 Microsoft.AspNetCore.Session 2.2.0 版中如何创建对象值的会话。我尝试阅读各种文章,但是当我尝试应用相同的文章时,它给了我错误,因为没有像“SetString”那样的重载。
public static class SessionHelper
{
public static void SetObjectAsJson<T>(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetObjectFromJson<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}
解决方案
在 Asp.Net Core 中,除了设置和获取会话字符串之外,您还必须将 SessionMiddleware 添加到管道中,在您的 startup.cs 文件中的 Configure 方法app.UseSession()
之前执行此操作。app.UseMvc()
之后,在您的 ConfigureServices 方法中,添加以下服务。
services.AddSession(options =>
{
//Replace {mins} with the time you want, usually around 20-30.
options.IdleTimeout = TimeSpan.FromMinutes({mins});
});
然后您可以继续使用 SessionHelper 类。另外你的类的名称是错误的,它应该被称为 SessionExtensions 而不是 SessionHelper,也许这就是你的扩展没有注册到 HttpContext.Session 的原因。希望这可以帮助。
推荐阅读
- python - 在 pcolor 图上添加 $y=x$ 行:它不起作用
- c# - selenium chromedriver 抛出版本错误,但版本匹配
- docker - 在 plesk 的 docker 容器上运行 keycloak 服务器的问题
- python - Django Python - 迁移后已删除属性上的 SQLDecodeError
- r - 为什么 geom_smooth 没有出现在分组数据框中?
- time-complexity - 广度优先或深度优先
- javascript - 如何递归地在树中插入项目
- python - 如何使用Python从excel中的列中获取子字符串?
- javascript - tfjs-core 引用突然停止工作并显示“在注册表中找不到后端”。错误
- pandas - 如何使用雪花和 python 从 Pandas 数据框创建 Spark 数据框?