c# - Asp.Net core/Razor Pages 奇怪的会话行为:会话每秒被丢弃一次
问题描述
我有一个 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);
无论出于何种原因,我无法解释自己,每次我执行此“登录”过程时,会话都会被服务器丢弃,因此tokenId
将是0
.
我注意到我对应用程序的不同部分有一个正常的授权系统,所以也许这很有趣。
任何帮助将不胜感激。先感谢您!(PS:我希望我已经为这个问题提供了足够的信息)
解决方案
删除 cookie 会删除跟踪会话状态的 cookie。因此,通过删除 cookie,您实际上是在删除会话状态并强制创建一个新状态。所以:
- 请求1,它在会话中设置整数。
- 请求 2 使用整数设置会话,然后删除会话 cookie,该会话 cookie 在没有 cookie 的情况下建立新会话。
- 请求 3 获取不包含整数的新会话。
推荐阅读
- javascript - 如何在 chrome 中打开我的项目链接
- css - CSS 表格行和单元格宽度
- npm - npm 安装失败 - 角度 cli
- vba - 在另一个 Sub 中调用时脚本不解析单元格,excel Vba
- javascript - 显示从数据库中选择的值
- javascript - 动态创建具有唯一名称的多个 wavesurfer 对象
- amazon-web-services - 我们如何每天使用 Lambda 将文件从 S3 移动到 EC2?
- java - 检索 cookie 并在后续的 POST 请求中发送
- podio - 获取文件 ID 以从项目中获取文件 - Podio API
- php - 通过 WiFi 而非以太网的 PHP 服务器