【问题标题】:How to store session data in .NET MVC 5如何在 .NET MVC 5 中存储会话数据
【发布时间】:2015-03-25 02:23:41
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    由于Session 属性是HttpSessionStateBase 类型,它可以更容易地在单元测试中模拟。请永远不要使用静态 HttpContext.Current.Session,因为您可能会在其他地方看到建议。

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

    【讨论】:

    • 为什么要使用Session 属性而不是HttpContext.Current.Session?我快速搜索了一下差异,我得到了this
    【解决方案2】:

    是的,您可以使用HttpContext 将数据应用到会话。不过,您应该警惕此类实现,Model View Controller 本质上是 stateless。会话虽然会规定某种形式的状态。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2015-02-07
      • 2010-11-24
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      相关资源
      最近更新 更多