我如何在mvc 6中的静态函数中使用session

时间:2016-02-28 08:26:55

标签: c# asp.net-core-mvc

此行不起作用

System.Web.HttpContext.Current.Session.RemoveAll();
  

严重级代码说明项目文件行源抑制状态   错误CS0234类型或命名空间名称' Web'不存在于   命名空间'系统' (你错过了程序集引用吗?)MVC6.DNX   核心5.0 26

     

被修改

     

我创建了这个

 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);
        }
    }
  

我如何使用static func

中的会话方法集
  public static class SessionHandler
    { 
       public static void SetSessionId(long? id)
        {
          new MySession().Set("id", id);
        }
}

1 个答案:

答案 0 :(得分:1)

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

查看此blog post以获取更多信息。