C# 如何在MVC6的静态函数中使用会话

C# 如何在MVC6的静态函数中使用会话,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,这条线坏了 System.Web.HttpContext.Current.Session.RemoveAll(); 严重性代码说明项目文件行源抑制状态 错误CS0234中不存在类型或命名空间名称“Web” 命名空间“System”(是否缺少程序集引用?) 核心5.0 26 编辑 我创造了这个 会话系统已完全重写。在普通控制器中,您可以只使用HttpContext.Session,但如果您在其他地方需要它,则需要使用IHttpContextAccessor注入它 查看此项了解更多信息。在.net

这条线坏了

System.Web.HttpContext.Current.Session.RemoveAll();
严重性代码说明项目文件行源抑制状态 错误CS0234中不存在类型或命名空间名称“Web” 命名空间“System”(是否缺少程序集引用?) 核心5.0 26

编辑

我创造了这个


会话系统已完全重写。在普通控制器中,您可以只使用
HttpContext.Session
,但如果您在其他地方需要它,则需要使用
IHttpContextAccessor
注入它


查看此项了解更多信息。

在.net core 1和2中,您还需要在启动时对其进行配置。
 public class MySession
    {
        private  readonly IHttpContextAccessor _httpContextAccessor;
        private  ISession _session => _httpContextAccessor.HttpContext.Session;

        public  MySession(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public  void Set(string key,object o)
        {
            _session.Set(key,o);
        }

        public  void Get(string key)
        {
            var message = _session.GetString(key);
        }
    }

  public static class SessionEx
    {
        public static void Set(this ISession session, string key, object value)
        {
            session.SetString(key, JsonConvert.SerializeObject(value));
        }

        public static T Get<T>(this ISession session, string key)
        {
            var value = session.GetString(key);

            return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
        }
    }
  public static class SessionHandler
    { 
       public static void SetSessionId(long? id)
        {
          new MySession().Set("id", id);
        }
}