ユーザーが終了したら終了する必要があるいくつかのセッションを使用しています。私はこれらの3つのセッションキラーに偶然出会いました。セッションを使用する時間が長くなるため、これらを使用するのに最適な時期はいつですか。また、知らない他のセッションの終了はありますか?
Session.Clear
およびSession.RemoveAll
は同一です。後者は前者を呼び出すだけです。彼らはすぐにセッションに保存されているすべてのアイテムを削除しますが、セッション自体は存続します。 Session_OnEndは発生しません。
Session.Abandon
は、実際に値をすぐにクリアするのではなく、現在のリクエストの最後で破棄されるセッションをマークするだけです。リクエストの残りの値を読み続けることができます。リクエストの後半でセッションに書き込む場合、新しい値は警告なしでリクエストの最後に静かに破棄されます。 Session_OnEndは、Abandonが呼び出されたときではなく、リクエストの最後に発生します。
Session.Clear
はセッションを強制終了せず、すべての値をクリアします。 Session.Abandon
は実際にセッションを強制終了します。
これの大部分はここで対処されているようです: ASP.NETでは、Session.Abandon()ではなくSession.Clear()をいつ使用する必要がありますか?
ここでは少し遅れますが、Session.RemoveAll
が内部でSession.Clear
を呼び出すため、@ stevemegsonが正しいという証明を共有したいと思います
public void Clear()
{
this._container.Clear();
}
public void RemoveAll()
{
this.Clear();
}
そして、まったく違いはありません
そしてsession.Abandon
呼び出し
public void Abandon()
{
this._container.Abandon();
}
基本的には:)。
public void Abandon()
{
this._abandon = true;
}