我在本地运行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 Session.Abandon();
或Session.Clear();
[WebMethod(EnableSession = true)]
答案 0 :(得分:3)
发现问题......感觉自己像个白痴。即使我关闭了IIS Express和运行服务中的所有实例,也有一个项目的实例正在某处运行,从而使我的会话项混乱。
为了确保我拥有最新的一切,我进去并修改了端口号 (右键单击Project - &gt; Properties)
这样做之后,一切都按预期工作。这可能是一个非常独特的案例,但想发布以防万一有人可能遇到类似的情况。
答案 1 :(得分:0)
你几乎检查了所有内容,只需检查无cookie模式,看看会出现什么,我猜你的cookie有什么问题:
<sessionState mode="InProc" cookieless="true" />