ASP.NET MVC 处理用户

本文关键字:用户 处理 MVC NET ASP | 更新日期: 2023-09-27 18:17:24

嗨,

我的 ASP.NET MVC页面中的登录方法如下所示:

Check ModelState
Check Username and password
user = accountModel.GetUser(model.UserName);
this.HttpContext.Session[Biss.Extensions.SessionKey.userContext.ToString()] = new UserContext() { SiteRole = (SiteRoles)user.RoleId, Id = user.Id };
FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie);
在开发过程中,我重建,多次

重新启动解决方案,我注意到以下内容:

  1. 启动网站
  2. 登录(使用上述方法(
  3. 重建灵魂
  4. 重启网站

现在 User.Identity.Name 仍将设置,但

HttpContext.Session[Biss.Extensions.SessionKey.userContext.ToString()]

是空的吗?我认为在进行重建/重新启动时网站正在重新启动,但如何仍然设置 User.Identity.Name?我该如何处理?

最诚挚的问候

ASP.NET MVC 处理用户

由于您正在重新启动 AppDomain,因此会话将被删除,因为它存储在内存中。想一想,在生产服务器中可能会发生完全相同的事情。在某些情况下,IIS 可以简单地重新启动应用程序池:例如,在达到某些非活动或内存/CPU 阈值之后。为避免丢失会话数据,您可以使用进程外会话存储,使其不会保留在内存中。查看以下文章以了解不同的可能性: http://msdn.microsoft.com/en-us/library/ms972429.aspx

当您重新启动网站时,您将清除您的会话。会话的状态只是消失了。

我建议在用户登录等简单情况下摆脱使用会话。我的一般答案几乎无处不在 - 如果您有非常严重的原因,请使用会话。

您可以将有关用户的信息保留在数据库中并读取比实际需要的要多。