Asp.net mvc 3 在Asp.net MVC 3.0中,HttpContext.Current.Session被混淆

Asp.net mvc 3 在Asp.net MVC 3.0中,HttpContext.Current.Session被混淆,asp.net-mvc-3,session-state,session-variables,Asp.net Mvc 3,Session State,Session Variables,我正在使用ASP.net MVC3.0应用程序,并在当前HttpContext的会话中保留当前用户信息 据我所知,HttpContext.Current是针对每个当前请求的。因此,我的会话数据应该在新请求后清除。但是,我可以通过存储HttpContext.Current从一个请求到另一个请求接收当前用户会话数据。为了理解MVC3.0中的会话管理,我做了这个示例以进行测试 我的问题:在当前请求之后,我如何接收会话数据?我真的很感谢你的帮助 public static UserAccountDto

我正在使用ASP.net MVC3.0应用程序,并在当前HttpContext的会话中保留当前用户信息

据我所知,HttpContext.Current是针对每个当前请求的。因此,我的会话数据应该在新请求后清除。但是,我可以通过存储HttpContext.Current从一个请求到另一个请求接收当前用户会话数据。为了理解MVC3.0中的会话管理,我做了这个示例以进行测试

我的问题:在当前请求之后,我如何接收会话数据?我真的很感谢你的帮助

public static UserAccountDto CurrentUser
    {
        get
        {
            if (HttpContext.Current == null)
                return null;

            if (HttpContext.Current.Session[CurrentUserSessionVariable] != null)
                return HttpContext.Current.Session[CurrentUserSessionVariable] as UserAccountDto;

            return null;
        }

        private set { HttpContext.Current.Session[CurrentUserSessionVariable] = value; }
    }

HttpContext.Current
与以下内容不同:

HttpContext.Current.Request

最后一个在每个请求中都是不同的,第一个包含用户、会话、服务器等成员,这些成员在许多(但不是所有)情况下都是一个又一个请求。

您所做的是正确的。您创建的会话变量将可用于创建它的请求之后的所有请求。
HttpContext是web开发中最大的对象之一,它的幕后工作是做很多事情。您不会丢失请求之间的会话的原因是服务器将使其保持活动状态。您会惊讶地发现,会话在幕后使用了缓存的特定部分,根据Microsoft的说法,他们说“获取或设置当前HTTP请求的HttpContext对象”。。。我很困惑。是的,但这并不意味着如果你在两个不同的请求中得到它,那么里面的一切都与以前完全不同!隐马尔可夫模型。。我同意了。谢谢