2011-01-04 2 views
1

Я хочу удалить временный файл с сервера после закрытия пользователем страницы (предположил, что у меня нет этого обратного вызова на сервере по умолчанию),Как я могу вызвать метод сервера, когда пользователь закрывает страницу

Я попытался вызвать метод на стороне сервера, используя (ICallbackEventHandler), когда пользователь закрывает страницу, но проблема заключается в том, что в этом случае не запускается метод на стороне сервера (закрытие страницы), это только ответ, если страница все еще открыта. и я не предпочитаю останавливать закрытие страницы до тех пор, пока сервер не ответит и не вернет свой звонок, чтобы закрыть страницу вручную.

В случае, если я должен прекратить закрытие страницы, любезно помогите мне с наилучшим способом.

Заранее спасибо

ответ

3

Я думаю, что может быть более разумным удалить файл через некоторый период времени, скажем, 24 часа, на основе недавно полученного доступа. То есть все файлы, которые не были затронуты за 24 часа, удаляются.

В качестве альтернативы, вы можете опросить AJAX, и как только вы не получите запрос с идентификационным идентификатором пользователя в течение некоторого времени threshhold> интервал опроса, удалите соответствующий файл.

+0

Хорошая идея с опросом AJAX. :) –

+0

Интересно, можете ли вы предоставить дополнительную информацию об объединении Ajax или ссылке, я не нашел много в Интернете быстро. – Homam

+0

Это действительно не так сложно; Я думаю, что, возможно, вы прыгаете с пистолетом на все, что вы пытаетесь сделать. По существу, удалите какой-либо URL-адрес вашего веб-сайта, который пересылает в какой-либо класс/метод action/controller/framework, вытаскивает токен аутентификации пользователя и непрерывно маркирует файлы, связанные с этим пользователем, с меткой времени или буквально «прикасается» к файлы. Попросите еще один сервис, работающий на каком-то таймере (интервал которого будет зависеть от ваших потребностей), и очистите все файлы, которые не были затронуты в течение определенного периода времени. –

4

Вы не можете знать, когда пользователь закрывает страницу.

Best вы можете достичь использует событие JS onunload и там отправить AJAX запрос:

<body onunload="SendRequest();"> 

И на JavaScript (JQuery это самый простой способ)

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

Это событие будет запускается всякий раз, когда пользователь переходит от страницы: F5, Back, Forward, нажатие ссылки, отправка формы и т. д. ... вы можете улучшить код, чтобы игнорировать такие случаи, как щелчок на странице, сообщите мне, если это необходимо, и я отредактирую с правильным кодом.

0

В аналогичной ситуации в моей первой задаче я оставил копию на сервере, и всякий раз, когда эта временная директория была вызвана с этой страницы, я удалил все файлы старше 72 часов. Не очень хорошо, но был принят в этой ситуации.

Если вам необходимо удалить его на сервере, если вы знаете, что пользователь больше не требует этого, вы можете использовать прослушиватель сеанса, см. this question.

Смежные вопросы