【问题标题】:Is there Session.Abandon() asp.net Core有没有 Session.Abandon() asp.net Core
【发布时间】:2016-10-27 08:59:59
【问题描述】:

在 Asp.net WebForms 中,global.asax 中有一个名为 Session_End() 的事件,每当会话超时或调用 Session.Abandon() 时,都会执行此事件处理程序,我需要在 asp 中有类似的行为。 net Core,有可能吗?

【问题讨论】:

  • 我认为您应该重新表述您的问题。很难回答!
  • 你试过 Session.Clear() 吗?
  • 我需要在会话自动超时时捕获事件,有什么原因要捕获该事件还是根本没有任何事件?
  • 我注意到Configure 函数在创建Startup.cs 时在Startup.cs 上运行。我使用这种方法创建了一种在类中使用HttpContext 的方法:stackoverflow.com/a/50815975/6778726

标签: asp.net-core .net-core asp.net-core-1.0


【解决方案1】:

docs 涵盖了大部分内容。会话超时设置如下:

services.AddSession(options =>
{
  options.IdleTimeout = TimeSpan.FromSeconds(10);
});

但既然存在就是一个cookie,那么cookie也有一个有效期。因此,如果IdleTimeout 过期,则会话过期。如果 cookie 过期,会话就消失了。如果 cookie 被删除,会话就消失了。

调用Session.Clear() 会删除会话的内容,但会保持会话不变(即cookie 未被删除),如source 中所述。

【讨论】:

  • 在 Asp.net WebForms 中有一个叫做 Seesion_End() 的东西在 global.asax 中,每当会话超时或者你调用 Session.Abandon() 这个事件处理程序被执行,我需要有类似的asp.net Core 中的行为,有可能吗?
  • 因此无法以编程方式使会话无效,例如当用户使用注销按钮时?除了将空闲超时设置得非常低之外,推荐的使会话无效的方法是什么。还可以检查什么值以确保超时实际上使会话无效?不知何故,.net Core 中的 Session 实现似乎没有完全实现,或者我在这里遗漏了一些东西。
  • @vm370 正如 Tratcher 上面提到的,从代码中使会话无效的推荐方法是调用Session.Clear()。这里有一些进一步的讨论:Session Issue 27
【解决方案2】:

您可以通过简单地调用来清除会话:

HttpContext.Session.Clear();

【讨论】:

  • 这将导致Session,但不会删除放弃
  • 那如果我们需要在.Net Core 3.1中做Abandon呢?
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 2017-07-28
  • 2021-12-22
  • 1970-01-01
  • 2020-08-23
  • 2018-05-30
相关资源
最近更新 更多