我可以使用HttpContext.ApplicationInstance.Context
类使用Session
函数存储会话数据吗?
或者有更好的方法来做到这一点?
答案 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");