c# - 您可以将特定会话变量设置为仅存活 5 分钟吗?
问题描述
有没有办法将会话ASP.NET Webforms
变量的生存时间设置为 5 分钟?
例如,如果我有变量:
Session["Name"] = "Bob";
5分钟后我希望它被摧毁,或者至少能够使它无效。
例子:
Session["Name"] = null;
//But in the background and not code-controlled as it has to be live over multiple pages.
我知道这些 Session 变量在 IIS 中控制的超时时到期,但我试图在超时发生之前以 5 分钟为间隔使它们到期,这可能吗?
解决方案
创建两个会话值(或包含两个值的单个对象,我可能更喜欢它,但为简单起见,我们只使用两个值来说明),一个带有值,一个带有到期时间。
Session["Name"] = "Bob";
Session["NameExpiry"] = DateTime.UtcNow.AddMinutes(5);
然后,无论您使用该值,请检查其到期时间:
if (Session["NameExpiry"] != null && DateTime.Parse(Session["NameExpiry"]) < DateTime.UtcNow)
{
Session["Name"] = null;
Session["NameExpiry"] = null;
}
您可以投入各种错误检查、值上的其他逻辑等。但主体是相同的。本质上,不要认为它试图设置某种后台计时器来主动使会话数据过期,考虑将过期时间存储为会话数据的一部分,并在该时间戳之后下次使用它时静默过期.
推荐阅读
- php - 如何使用 Laravel Excel 避免特殊字符?
- javascript - 将范围限制为 elementHandles 数组(用于选择/单击/等)
- javascript - Node.js - 如何创建 html 表?
- json - 如何在 Flutter 应用中使用 SOLID 原则实现链接到 Provider 的 API 调用?
- javascript - 期望在箭头函数结束时返回一个值:array-callback-return
- sql - 搜索事件和前一个事件
- azure-cognitive-search - 如何在没有索引存储的情况下使用 Azure 内容搜索?
- javascript - 如何在nodejs中同步递归和异步函数
- reactjs - 容器和展示模式仍然是钩子的最佳实践吗?
- r - geom_raster 和 geom_point 的两种颜色渐变