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,在session中设置整数。
- 请求2用整数建立session,然后删除session cookie,在没有cookie的情况下建立新的session。
- 请求 3 获取不包含整数的新会话。
我有一个 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,在session中设置整数。
- 请求2用整数建立session,然后删除session cookie,在没有cookie的情况下建立新的session。
- 请求 3 获取不包含整数的新会话。