Asp.Net core/Razor 页奇怪的会话行为:会话每隔一秒就会被丢弃

Asp.Net core/Razor Pages strange session behaviour: session is thrown away every second time

我有一个 Razor Pages 应用程序,其中有一个非常简单的部分,用户在其中输入 ID 并被重定向到显示特定内容的页面。

当用户输入 ID 时,我将像这样设置 Session 变量:

HttpContext.Session.Clear();
HttpContext.SignOutAsync();
foreach(var cookie in Request.Cookies.Keys)
{
    Response.Cookies.Delete(cookie);
}
HttpContext.Session.SetInt32("Token", 12345);
return Redirect("/DisplayPresentation");

我删除所有 cookie 并退出的原因是因为我想确保当前会话中没有其他内容。

基本上我在重定向页面上接收到该会话值,就像这样:

int tokenId = HttpContext.Session.GetInt32("Token") ?? default(int);

无论出于何种原因,我无法解释自己,每次我这样做时 "login" 处理会话都会被服务器丢弃,因此 tokenId 将是 0 .

我注意到我有一个用于应用程序不同部分的正常授权系统,所以这可能是在做一些有趣的事情。

如有任何帮助,我们将不胜感激。先感谢您! (PS:希望我已经为问题提供了足够的信息)

删除 cookie 会删除跟踪会话状态的 cookie。因此,通过删除 cookie,您实际上是在删除会话状态并强制创建一个新会话状态。所以:

  1. 请求1,在session中设置整数。
  2. 请求2用整数建立session,然后删除session cookie,在没有cookie的情况下建立新的session。
  3. 请求 3 获取不包含整数的新会话。