会话值返回 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"/>
我试过的其他项目
- 确保
<httpCookies requireSSL="true" />
不在 web.config 中
- 已尝试启用 运行 SSL
- 运行 处于发布模式
- 确保没有
Session.Abandon();
或Session.Clear();
- 确保没有病毒扫描 运行
- 进行了搜索以确保我没有在其他地方更新
- 确保我的 ASP.NET State Service 是 运行
- 尝试添加
[WebMethod(EnableSession = true)]
- 我已确保已启用 cookie
您几乎检查了所有内容,只需使用无 cookie 模式检查,看看出现了什么,我猜您的 cookie 内容有问题:
<sessionState mode="InProc" cookieless="true" />
找到了问题...感觉自己像个白痴。尽管我关闭了 IIS Express 和我的 运行ning 服务中的所有实例,但该项目的另一个实例在某处 运行,因此混淆了我的会话项。
为了确保一切都是最新的,我进去修改了端口号
(右击项目 -> 属性)
这样做之后,一切都按预期进行。这可能是一个非常独特的案例,但我想 post 以防有人 运行 遇到类似情况。
我是 运行 本地 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"/>
我试过的其他项目
- 确保
<httpCookies requireSSL="true" />
不在 web.config 中
- 已尝试启用 运行 SSL
- 运行 处于发布模式
- 确保没有
Session.Abandon();
或Session.Clear();
- 确保没有病毒扫描 运行
- 进行了搜索以确保我没有在其他地方更新
- 确保我的 ASP.NET State Service 是 运行
- 尝试添加
[WebMethod(EnableSession = true)]
- 我已确保已启用 cookie
您几乎检查了所有内容,只需使用无 cookie 模式检查,看看出现了什么,我猜您的 cookie 内容有问题:
<sessionState mode="InProc" cookieless="true" />
找到了问题...感觉自己像个白痴。尽管我关闭了 IIS Express 和我的 运行ning 服务中的所有实例,但该项目的另一个实例在某处 运行,因此混淆了我的会话项。
为了确保一切都是最新的,我进去修改了端口号 (右击项目 -> 属性)
这样做之后,一切都按预期进行。这可能是一个非常独特的案例,但我想 post 以防有人 运行 遇到类似情况。