【发布时间】:2016-09-23 21:24:45
【问题描述】:
我在本地运行一个 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];
}
变量 test 将填充该值。我仔细检查了所有变量名。键仍然存在于集合中,但值消失了。
尝试的解决方案
解决方案 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
【问题讨论】:
-
检查您的浏览器是否启用了cookies
-
刚刚再次检查以确保它们是...
-
您是否真的有可能为第二个参数调用带有 null 的 SetSessionValue/SetUserName?可能会在调用 SetSessionValue 时添加一些日志记录。
-
我已经确认过了。另外在上面更新的 SetSessionValue 中进行了测试。我确定我正在传递一个值,只是它离开方法后似乎会丢失它
-
您没有在 GetUserName 方法中设置用户名变量..请更新代码
标签: c# asp.net-mvc session-variables