2011-01-04 6 views
1

ユーザーがページを閉じると、サーバーから一時ファイルを削除したい(私はこのコールバックがデフォルトでサーバーにないと仮定していた)、ユーザーがページを閉じるときにサーバーメソッドを呼び出すには

ユーザーがページを閉じるときに(ICallbackEventHandler実装)を使用してサーバー側のメソッドを呼び出そうとしましたが、サーバー側のメソッドがこの場合(ページを閉じる)起動しないという問題がありました。ページがまだ開いています。サーバーの応答までページを閉じるのをやめ、手動でページを閉じるためにその呼び出しを送り返すことを好むわけではありません。

私はページを閉じることをやめなければならない場合は、親切に私に最善の方法を教えてください。

ありがとうございます。

答えて

3

最近アクセスした時間帯のある一定の期間、たとえば24時間後にファイルを削除するほうが賢明かもしれないと思います。つまり、24時間以内に触れられていないすべてのファイルが削除されます。

また、AJAXを使用してポーリングすることもできます。また、ユーザーの識別トークンがある程度の時間内にポーリング間隔以内に要求を受け取らないと、関連するファイルを削除してください。

+0

AJAXポーリングでいい考えです。 :) –

+0

あなたがAjaxのプールやリンクについてもっと詳しい情報を提供できるかどうか、私はインターネット上ですばやく見つけられませんでした。 – Homam

+0

本当にそれほど難しいことではありません。私はおそらくあなたがしようとしていることに銃を飛ばしていると思います。本質的には、ある種のアクション/コントローラー/フレームワーククラス/メソッドに転送し、ユーザーの認証トークンを取り出し、そのユーザーに関連付けられたファイルにタイムスタンプを付けてマークするか、文字通り「touch」ファイル。いくつかのタイマー(時間間隔はあなたのニーズに依存するでしょう)で別のサービスを稼働させ、特定の時間帯に触れていないすべてのファイルを消去します。 –

4

ユーザーがいつこのページを閉じるのか分かりません。

AJAX要求を送信JS onunloadイベントを使用して、そこにあるあなたが達成することができますベスト:

<body onunload="SendRequest();"> 

とJavaScript:(jQueryのが最も簡単な方法です)

function SendRequest() 
{ 
    var sURL = "http://localhost/Log.aspx?action=unload&t=" + (new Date()).getTime(); 
    $.ajax({ url: sURL }); 
} 

このイベントはなりますF5、戻る、進む、リンクをクリックする、フォームを送信するなど...ページ内の何かをクリックするようなコードを改善することができます。適切なコードで

0

私の最初の仕事で同様の状況で、私はサーバーにコピーを残し、その一時ディレクトリがそのページから再度呼び出されるたびに、72時間以上経過したファイルは削除されました。それほど良いことではありませんでしたが、その状況で受け入れられました。

ユーザーがそれ以上サーバーを必要としていないことがわかっている場合は、サーバー上で削除する必要がある場合は、セッションリスナーを使用できます。this questionを参照してください。

関連する問題