如何在.NET MVC 5中存储会话数据

时间:2015-01-26 16:16:30

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

我可以使用HttpContext.ApplicationInstance.Context类使用Session函数存储会话数据吗? 或者有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:11)

通常,会话可用作控制器操作中的属性:

public ActionResult Index()
{
    this.Session["foo"] = "bar";
    return View();
}

由于Session属性的类型为HttpSessionStateBase,因此可以在单元测试中更轻松地模拟它。请不要像在其他地方看到的那样使用静态HttpContext.Current.Session

如果您不在控制器操作中,则可以使用其Session属性在HttpContextBase实例(几乎在MVC管道的每个部分中)访问会话。

答案 1 :(得分:1)

是的,您可以使用HttpContext将数据应用到会话中。您应该警惕这些实现,模型视图控制器本质上是无状态。会议虽然会决定某种形式的国家。

您必须考虑到这一点,否则如果不考虑它们,您可能会引入大量孤立的会话变量。根据您的应用程序,可以快速占用您环境中的内存。

如果应用程序很小,您可以使用Controller中的以下内容轻松完成:

HttpContext.Current.Session.Add("Title", "Data");