首页 > 解决方案 > 如何在 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);
        }
    }

标签: sessionasp.net-coresession-state

解决方案


在 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 的原因。希望这可以帮助。


推荐阅读