Session不会在控制器之间保存数据
本文关键字:之间 保存 数据 控制器 Session | 更新日期: 2023-09-27 18:05:23
在使用Identity 2对用户进行身份验证后,我想在会话中保留有关他或她的一些信息。我可以在immediate action方法中访问Session,也就是我将用户重定向到它的那个,但在那之后就不行了。
这是代码:
ClaimsIdentity ident = await UserManager.CreateIdentityAsync(Login,
DefaultAuthenticationTypes.ApplicationCookie);
AuthManager.SignOut();
AuthManager.SignIn(new AuthenticationProperties
{
IsPersistent = true
}, ident);
HttpContext.Session["var"] = "data";
return RedirectToAction("Index", "Home");
到目前为止,我已经尝试了以下步骤:
我已经在
web.config
中手动添加了Session
[1]。我设置
runAllManagedModulesForAllRequests
为true
- 我已经检查了浏览器的cookie,它正在传输,并且在不同的请求期间是相同的。
- 我检查了
Session.SessionId
,它在当前会话的不同请求期间是相同的。
这是web.config
,它没有任何与会话相关的内容,我手动添加了它们。
<system.webServer>
<modules>
<remove name="Session"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
</modules>
</system.webServer>
我正在尝试调试IIS Express上的应用程序,但我还没有尝试过IIS。
我可以访问帐户控制器中的会话变量,该帐户控制器负责日志记录和Home控制器,这是我将用户重定向到的地方,但不是任何其他控制器。我应该注意到,如果我刷新页面以第二次点击主控制器,会话变量将丢失。换句话说,它们没有被保存下来。
我刚刚发布了应用程序,并在IIS上尝试了它,它似乎工作得很好
任何可能的解决方案和调试指南是赞赏的。:)
您缺少sessionState元素,您添加了模块,但是您没有配置它。
如何链接到MSDN
同样,你需要用SessionState Behavior属性来修饰你的控制器动作。
[SessionState(SessionStateBehavior.ReadOnly)]
或[SessionState (SessionStateBehavior.Required)]