Отмена обработки обратного вызова ASP.NET - PullRequest
2 голосов
/ 20 июня 2011

Я загружаю gridview, используя код, основанный на этом:

http://msdn.microsoft.com/en-us/library/ms366515%28v=VS.80%29.aspx

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

Как я могу отменить обработку обратного вызова на сервере, когда пользователь нажал "Отмена" ??

спасибо

Ответы [ 3 ]

3 голосов
/ 20 июня 2011

Обыскали достаточно широко и обнаружили, что можно Cancel Server Tasks with ASP.NET & AJAX

Хотя я не очень хорошо с AJAX, нашел несколько ссылок, которые помогут вам,

Вот как Отмена серверных задач с ASP.NET & AJAX и вот ветка форума о чем-то похожем на вашу проблему.

Надеюсь, это помогло!

2 голосов
/ 20 июня 2011

AFAIK, вы не можете отменить обработку обратного вызова на стороне сервера после ее запуска.Самое большее, у вас может быть некоторая логика на стороне клиента (браузера), которая будет игнорировать результаты обратного вызова.

В любом случае, я предлагаю вам использовать ASP.NET AJAX (UpdatePanel или Script Services) вместо использованияICallbackEventHandler.Это довольно простой в использовании и более гибкий.Кроме того, у вас также есть такие опции, как отмена обратных вызовов: см. эту статью для отмены обратного вызова панели обновления (обратите внимание, что отмена действительно означает прекращение ожидания (и игнорирования) результатов обратного вызова, обработка на стороне сервера будет происходить).1008 *

1 голос
/ 20 июня 2011

После того как вы инициировали запрос к серверу, клиент не может отменить его.Игнорируя механику вокруг любого возможного «отменяемого метода», вы начали запрос с сервера.Любое дальнейшее сообщение приведет к новому запросу, так что исходный запрос будет продолжаться до его завершения.Помните, что HTTP - это протокол без сохранения состояния, каждый запрос не знает ни о каком предыдущем запросе, и поэтому он может отменить предыдущий запрос?

Лучше всего было бы просто игнорировать ответ сервера, или если вам действительно нужно отменить долгосрочное задание, которое может по-прежнему обрабатываться на сервере, вам нужно самостоятельно включить эту поддержку, так как веб-сервер не будет поддерживать ее изначально.Для этого вам, вероятно, потребуется какой-то способ сохранения состояния задачи в нескольких HTTP-запросах, а исходный запрос (выполняющий эту задачу) будет отслеживать какой-то флаг отмены.

Просто запомните, хотяв приведенном выше сценарии вы не отменяли бы запрос, но выполняли задание, в котором выполняется запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...