会话值返回 null

Session values returning null

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

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 });
}

上面的用户名是一个例子,但我遇到过多次这种情况,每次键的值为空,但键仍然存在。我进一步去了 打开并将以下内容添加到 SetSessionValue 以进行测试:

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

变量 test 将填充该值。我仔细检查了所有变量名。键仍然存在于集合中,但值消失了。

尝试过的解决方案

解决方案 1 -

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

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

解决方案 2 -

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

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

我试过的其他项目

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

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

找到了问题...感觉自己像个白痴。尽管我关闭了 IIS Express 和我的 运行ning 服务中的所有实例,但该项目的另一个实例在某处 运行,因此混淆了我的会话项。

为了确保一切都是最新的,我进去修改了端口号 (右击项目 -> 属性)

这样做之后,一切都按预期进行。这可能是一个非常独特的案例,但我想 post 以防有人 运行 遇到类似情况。