【问题标题】:retrieving session variable from another controller从另一个控制器检索会话变量
【发布时间】:2017-03-21 18:25:06
【问题描述】:

是否可以从创建它的不同控制器中检索 Session 变量?

我在我的帐户控制器中创建它

System.Web.HttpContext.Current.Session["Session"] = sessionGuid;

我正在尝试使用不同的控制器

if (System.Web.HttpContext.Current.Session["Session"] != null)
{
    return Json(System.Web.HttpContext.Current.Session["Session"].ToString());
}
    return null;

它总是返回null

作为测试,我向我的登录控制器添加了一些代码,在这部分我确实从中获得了价值

if (System.Web.HttpContext.Current.Session["Session"] != null)
    {
        test = System.Web.HttpContext.Current.Session["Session"].ToString();
    }
        else
    {
        test = "no";
    }

我总是得到实际结果,而不是代码的“否”部分

【问题讨论】:

  • Read this。您可能没有正确保存/设置会话状态

标签: c# asp.net-mvc session-variables


【解决方案1】:

由于某种原因,它与我访问会话的方式不同,在另一个控制器上,我更改为此代码并且它工作了

if (HttpContext.Session["Session"] != null)
{
  return Json(HttpContext.Session["Session"].ToString());
}
return null;

【讨论】:

  • 我之前在对您的问题的评论中分享了一个链接。阅读以了解原因。
  • HttpContext.SessionHttpContext.Current.Session 之间有区别
【解决方案2】:

如果控制器在同一个网站/虚拟目录中,那么是的,但是如果你说你的会话是在不同的站点中创建的,并且你试图在属于不同站点的控制器中访问它,那么你不能。

【讨论】:

  • 它们都是在同一个站点中创建的,即使我是空的
  • 试试这个:forums.asp.net/t/…
猜你喜欢
  • 2011-07-05
  • 2013-05-21
  • 2022-01-21
  • 1970-01-01
  • 2020-11-23
  • 2018-07-01
  • 2017-03-23
  • 1970-01-01
  • 2012-04-26
相关资源
最近更新 更多