会话值返回null

时间:2016-05-26 03:52:24

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

我在本地运行ASP MVC站点(.Net 4.5),并且在尝试从会话中检索值时遇到问题。我从静态助手调用代码 类与以下类似:

Helpers.cs

public static void SetSessionValue(string key, object value)
{       
    HttpContext.Current.Session[key] = value;
}

public static object GetSessionValue(string key)
{   
    return HttpContext.Current.Session[key];
}

AjaxController.cs

public ActionResult SetUserName(string username)
{
    Helpers.SetSessionValue("username", username);
}

public ActionResult GetUserName()
{
    var username = Helpers.GetSessionValue("username"); 
    return Json(new { valid = true, username });
}

上面的用户名是一个示例,但我发生了多种情况,每次密钥的值为空,但密钥仍然存在。我走了进去 on并将以下内容添加到SetSessionValue以进行测试:

public static void SetSessionValue(string key, object value)
{       
    HttpContext.Current.Session[key] = value;
    var test = HttpContext.Current.Session[key];
}

变量测试将填充值。我仔细检查了所有变量名称。密钥仍然存在于集合中,但值消失。

尝试解决方案

解决方案1 ​​ - HttpContext.Current.Session null item

我在我的网络配置中设置了以下内容,没有运气

<sessionState mode="InProc" timeout="20" />

解决方案2 - HttpContext.Current.Session is null when routing requests

我在我的网络配置中设置了以下内容,没有运气

<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>

我尝试过的其他项目

  • 确保<httpCookies requireSSL="true" />不在web.config
  • 尝试使用SSL启用并运行
  • 以发布模式运行
  • 确保没有Session.Abandon();Session.Clear();
  • 确保没有运行病毒扫描
  • 搜索以确保我没有在其他地方更新
  • 确保我的 ASP.NET状态服务正在运行
  • 尝试添加[WebMethod(EnableSession = true)]
  • 我确保启用了Cookie

2 个答案:

答案 0 :(得分:3)

发现问题......感觉自己像个白痴。即使我关闭了IIS Express和运行服务中的所有实例,也有一个项目的实例正在某处运行,从而使我的会话项混乱。

为了确保我拥有最新的一切,我进去并修改了端口号 (右键单击Project - &gt; Properties)

enter image description here

这样做之后,一切都按预期工作。这可能是一个非常独特的案例,但想发布以防万一有人可能遇到类似的情况。

答案 1 :(得分:0)

你几乎检查了所有内容,只需检查无cookie模式,看看会出现什么,我猜你的cookie有什么问题:

<sessionState mode="InProc" cookieless="true" />