0

ASP.Net 3.5 C#を使用してWebサイトを開発しています。私のサイトのすべてのオンラインユーザー(私のサイトに再ログインしたユーザー)を一覧表示しています。ユーザーがログアウトしたとき、または単にブラウザーを閉じたとき、または他のサイトに移動したときに、データベース内のユーザーのステータスを追跡および更新したいと思います。これらすべての場合で、ユーザーのステータスを「ログアウト」として更新したいと思います。

どうすればそれを進めることができますか。

ありがとうVivek

4

4 に答える 4

0

ユーザーがボタンをクリックすると、サーバー側(コードビハインド)でクリックイベントを処理し、ステータスの変更をログに記録できます。

ブラウザが閉じている場合は、global.asaxでSession_Endイベントを処理できます。このイベントは、セッションが終了したときに発生します。

public void Session_End(object sender, EventArgs e)
{
    // Fires when the session ends
}
于 2011-04-27T13:29:54.233 に答える
0

正当なログアウト (ログアウト ボタンのクリックによるログアウトなど) は簡単に追跡できます。イベントを処理し、データベースのステータスがログアウトされていることをマークするだけです。

ただし、ブラウザーを閉じることは、私が成功したことがないことの 1 つです。閉じるボタンをキャプチャしてからajaxリクエストなどをキャプチャするように指示する多くのソリューションをWeb経由で取得しますが、私はそれで成功しませんでした。

(Session_End のようなものは便利かもしれませんが、IN-PROC セッション モード以外を使用している場合、このイベントが発生しないという問題があるため、信頼できません)。

于 2011-04-27T13:32:32.260 に答える
0

ユーザーがブラウザを閉じたかどうか、または別のサイトに移動したかどうかはわかりません。ユーザーがサイトを閲覧していることを確認するために、特定の時間間隔でサーバーにいくつかのメッセージを送信する、ある種の AJAX コントロールを使用する必要があると思います。

于 2011-04-27T13:34:53.563 に答える
0

まず、この他の質問で私の答えを確認してください:

一部のユーザーがブラウザーを閉じたり、コンピューターをシャットダウンしたりした場合、セッションをすぐに閉じてこの変更を追跡することはできません。これは、セッション タイムアウトをいじることによって実現されます。

もう 1 つの可能性は、ある時間間隔でサーバーに対して何らかの操作をトリガーした場合、ユーザーがオンラインであると見なすことができます。これは、サーバー ロジックに実装されます。

ログアウトは「人間のユーザー」のアクションであるため、簡単に追跡できる必要があります。認証マネージャークラスまたは認証を処理する他のクラスに「UserLogout」イベントを実装し、そこでログアウトを追跡するだけです。

別のページの閲覧や Web ブラウザの終了などのクライアント側のユーザー アクションは、テクノロジの制限により追跡できません。API がこの領域にないためです。それは、Web パラダイムとその原則によるものです。あなたはそれを見逃す必要があります。

于 2011-04-27T13:38:21.600 に答える