web-dev-qa-db-ja.com

Session.Abandon()asp.net Coreはありますか

Asp.net WebFormsには、global.asaxにSeesion_End()というイベントがあります。セッションがタイムアウトするか、Session.Abandon()を呼び出すと、このイベントハンドラーが実行されます。asp.netCoreでも同様の動作が必要です。出来ますか?

15
Shafqat Ali

次のように呼び出すだけで、セッションをクリアできます。

HttpContext.Session.Clear();

7
Benader

docs がこれのほとんどをカバーしています。セッションタイムアウトは次のように設定されます。

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

ただし、Cookieが存在するため、Cookieにも有効期限があります。したがって、IdleTimeoutが期限切れになると、セッションは期限切れになります。 Cookieの有効期限が切れると、セッションは失われます。 Cookieが削除されると、セッションは失われます。

Session.Clear()を呼び出すと、セッションの内容は削除されますが、 source で説明されているように、セッションはそのまま維持されます(つまり、Cookieは削除されません)。

3
Robert Paulsen