2010-07-30 7 views
1

У меня есть страница ASP.NET (C#), которая имеет длительное время загрузки (например, 2 минуты). Пользователь получает небольшую анимацию и сообщение «please wait». Если пользователь случайно загружает эту страницу, им нужно дождаться ее загрузки.Как остановить загрузку страницы после отправки запроса?

Мой вопрос: есть ли способ остановить загрузку страницы?

Спасибо

+0

Как загружать данные? Ajax или просто через запрос главной страницы? И что бы вы хотели отменить? Просто прекратите загрузку или выполните перенаправление или сделайте экран чем-то другим? – Chris

+0

Я не использую AJAX. Что я хотел бы сделать, это выпустить команду остановки загрузки на сервер, чтобы остановить ее отображение, потому что большой рендеринг страниц замедляет работу других пользователей, использующих систему. – Olivier

ответ

4

Если вы хотите остановить обработку на стороне сервера, то это сложная операция. Как правило, после запроса делается эта страница рендеринга на собственной независимой от других тингов. То, что вам, вероятно, нужно будет сделать, - это перестроить эту страницу, чтобы регулярно проверять, была ли выпущена команда остановки и прервать все, что она делает в этот момент. Флаг остановки может быть помещен в сеанс и должен быть очищен после остановки.

Возможно, вам также необходимо будет рассмотреть, как правильно идентифицировать правильный, чтобы остановить (в случае, если работает более одного). Это можно сделать, возвратив уникальный идентификатор, который может быть использован в части вызова на страницу «прервать».

Мой подход, хотя и не связанный с этим rigmarole, заключается в том, чтобы попытаться остановить пользователя от этой аварии. Возможно, сделайте любую ссылку, на которую они нажимают, вызывают предупреждение: «Следующая страница займет несколько минут для рендеринга, вы хотите продолжить», а затем, надеюсь, вы действительно прекратите запрос страницы до того, как она будет сделана.

Я должен отметить, что я никогда не пытался делать подобные вещи раньше, поэтому могут быть более легкие способы сделать это, но так я, вероятно, думаю, что проблема будет решена.

+0

Ваша идея кажется хорошей. Я попробую – Olivier

0

Попробуйте window.stop() в JavaScript.

+0

Я пробовал это, и он не останавливает страницу от рендеринга – Olivier

+0

Вы в IE? Попробуйте следующее: 'document.execCommand ('Stop')'. Не очень, но если это сработает, вам, вероятно, придется поддерживать обе команды в разных браузерах. –

+2

Если вы посмотрите на ответ на мой комментарий по вопросу, это не совсем то, что необходимо в любом случае. Галаэль также пытается остановить обработку сервера, и это решение, которое я не думаю, когда-либо сделаю. – Chris

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