web-dev-qa-db-ja.com

Session.Abandon()が機能しない場合、どのようにプログラムでasp.netのセッションを終了しますか?

Session.Abandon()は何もしていないようです。 Session.Abandon()が呼び出されると、Session_endイベントが発生することが期待されます。

15
Slim

これは、SessionModenotInProc(セッションの終了を検出できる唯一のもの)であることが原因である可能性があります。 。

[〜#〜] msdn [〜#〜] から引用:

セッションイベント

ASP.NETは、ユーザーセッションの管理に役立つ2つのイベントを提供します。 Session_OnStartイベントは、新しいセッションが開始されたときに発生し、Session_OnEndイベントは、セッションが放棄または期限切れになったときに発生します。セッションイベントは、ASP.NETアプリケーションのGlobal.asaxファイルで指定されます。

セッションModeプロパティがデフォルトモードであるInProc以外の値に設定されている場合、Session_OnEndイベントはサポートされません。

34
Noldorin

Session.Abandon()は、セッションを終了する方法です。あなたが直面している問題は何ですか?

[戻る]ボタンが関連している場合、それはまったく別の問題です(ページは[戻る]にポストバックせず、代わりにクライアント側のキャッシュから実行するため、サーバー側のメソッドは実行されません)。

さらに、Session_Endには問題があります。 InProcセッションを使用している場合はSession.Abandon()でのみ起動するため、別のセッションモードを使用している場合は、信頼できません。それ以外の場合は、SessionTimeoutに達したときにSession_Endが起動します(デフォルトは20分で、Web.Configで構成されています)。

12
Serapth

セッションが持続しているように見える場合は、(web.configで)試してみてください。

<sessionState regenerateExpiredSessionId="true">
1
Axl

これは、セッション終了がいつ呼び出されるかについて説明する記事です。

http://www.highoncoding.com/Articles/108_When_is_Session_End_Called__.aspx

1
azamsharp

以下を使ってみましたか?

System.Web.Security.FormsAuthentication.SignOut();

これにより、フォーム認証に使用されているCookieがクリアされますが、探しているものではない場合があります。

Session.Abandon()に加えてこれを使用する必要があるかもしれません

1
RYFN

アプリケーションが2つのサーバーにあるかどうかによって異なります。1つは独自のセッションを持つWebApplicationで、もう1つは独自のセッションを持つWSまたはWCFアプリケーションであり、私がかつて作業していたアプリケーションでの状態によって異なります。この場合よりも、セッションは2番目のポイントで終了する必要があり、最初のポイントが終了するとタイムアウトが表示されます。少なくとも、トークンを使用し、アクティブなセッションのトークンのリストを保持する必要があります。それはあなたの場合かもしれません。幸運を。 PS。セッションを強制終了するには、2番目のサーバーでセッションを管理します。

0
diadiora