有没有办法ASP.NET Webforms
将会话变量的生存时间设置为 5 分钟?
例如,如果我有变量:
Session["Name"] = "Bob";
Run Code Online (Sandbox Code Playgroud)
5分钟后我希望它被摧毁,或者至少能够使其无效。
例子:
Session["Name"] = null;
//But in the background and not code-controlled as it has to be live over multiple pages.
Run Code Online (Sandbox Code Playgroud)
我知道这些会话变量会在 IIS 内控制的超时后过期,但我试图在每隔 5 分钟超时发生之前使它们过期,这可能吗?
创建两个会话值(或包含这两个值的单个对象,我可能更喜欢它,但为了简单起见,我们只使用两个值来说明),一个包含该值,另一个包含其到期时间。
Session["Name"] = "Bob";
Session["NameExpiry"] = DateTime.UtcNow.AddMinutes(5);
Run Code Online (Sandbox Code Playgroud)
然后,无论您在何处使用该值,请检查其过期时间:
if (Session["NameExpiry"] != null && DateTime.Parse(Session["NameExpiry"]) < DateTime.UtcNow)
{
Session["Name"] = null;
Session["NameExpiry"] = null;
}
Run Code Online (Sandbox Code Playgroud)
您可以添加各种错误检查、值上的其他逻辑等。但原理是相同的。从本质上讲,不要将其视为尝试设置某种后台计时器来主动使会话数据过期,而是将过期时间存储为会话数据的一部分,并在下次使用该时间戳后静默使其过期。
归档时间: |
|
查看次数: |
1077 次 |
最近记录: |