ASP.NETは、マルチユーザログイン[RPM]を禁止します

エラーが存在しない場合に、それがアプリケーションに追加されているがある場合、ユーザは既に、アプリケーションに存在するかどうかを決定する(アプリケーションセッションは、全てに共通であり、全体のWebアプリケーション1つのオブジェクトのみ):
以下は引用断片である
  、文字列= strUserID txtUser.Text
  ArrayListの一覧= Application.Get( "GLOBAL_USER_LIST")ArrayListのAS;
  IF(リスト== NULL)
  {
  リスト新しい新しい=のArrayList();
  }
  のための(I = 0をint型、I <list.Count; I ++)
  {
  IF(strUserID ==(リスト[I]は、文字列として))
  {
  //既に登録されている、エラーメッセージ
  lblError.Text = "既にログインしているユーザこの";
  リターン;
  }
  }
  list.add (strUserID);
  Application.Add( "GLOBAL_USER_LIST"、リスト)。
 
 もちろん、そこにはまたようにキャッシュを使用して保存することができます。
  次のステップは、ユーザがこのユーザアプリケーションから出たとき、私たちはGlobal.asaxの中のSession_Endイベントで扱うことができ、削除します。
以下引用されているフラグメント:
  のSession_Endを無効(SENDERオブジェクト、EventArgsのEは)
  {
  //コードは、セッションの最後に実行します。
  //注:Web.configファイルでのみてsessionStateモードが設定されている
  とき//インプロセス、のSession_Endイベントを提起します。セッションモードはは、StateServerに設定されている場合は
  、//またはSQLServerの、イベントが発生しません。
  ;セッションstrUserID =文字列の文字列として[ "SESSION_USER"]
  のArrayList AS ArrayListの一覧= Application.Get( "GLOBAL_USER_LIST");
  IF(strUserID一覧= NULL = NULL &&!)
  {
  list.Remove(strUserID);
  Application.Add( "GLOBAL_USER_LIST"、リスト);
  }
  }
  これらは問題ではありません、問題は、ユーザーが直接ブラウザに閉じるボタンをポイントしたときに問題があるということです。ダイレクトがオフになって、セッションがすぐに期限切れイベントをトリガしませんので、つまり、ボードにログオンするには、ブラウザを閉じては、それにはありません。
   2つの方法があります。
  1、の使用 JavaScriptの
  各ページにいくつかのJavaScriptコードを追加します:
以下是引用片段:
  関数window.onbeforeunload()
  {
  IF(event.clientX> document.body.clientWidth && event.clientY <0 || event.altKey){
  window.open( "ログアウト。ASP用 X")。
  }
  }

ます。https://www.cnblogs.com/Tim_Liu/archive/2010/11/25/1887962.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33810006/article/details/94724539