在c#中使用异步中的会话

时间:2014-10-29 12:22:32

标签: asp.net-mvc asynchronous c#-5.0

这是我尝试的代码,但当前的http上下文为空 HttpContext.current.Session []在代码执行之间变为null。 async方法如下

      public async Task<User> GetUser()
    {
        try
        {
            if (_sessionService.IsSet(SessionKey.User))
            {
                return _sessionService.Get<GBLUser>(SessionKey.User);
            }
            else
            {
                var userID = _environmentService.GetUserId();
                var user = await _userService.GetUser(userID);
                _sessionService.Set(SessionKey.User, user);
                return user;
            }
        }
        catch (Exception ex)
        {
            throw new Exception("", ex);
        }
    }
 public void Set(SessionKey key, object data)
    {
        try
        {
            var sessionData = (Dictionary<string, object>)HttpContext.Current.Session[_sessionKey];
            if (sessionData != null)
            {
                sessionData.Add(key.ToString(), data);
                HttpContext.Current.Session[_sessionKey] = sessionData;
            }
            else
            {
              HttpContext.Current.Session[_sessionKey] = new Dictionary<string, object> { {                         key.ToString(), data } };
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

是否需要其他配置才能完成此项工作

0 个答案:

没有答案