Как использовать ASP.NET с шаблоном «Redirect after POST»? [Изменено] - PullRequest
0 голосов
/ 24 августа 2010

Я впервые пытаюсь реализовать Redirect After Post в ASP.NET. Предполагая, что мои бизнес-объекты могут занять несколько секунд или минут, в каком порядке и какой синтаксис я использую?

Например:

  1. Пользовательские сообщения

  2. Сервер выдает Server.Transfer или Response.Redirect

  3. Сервер делает что-то, что занимает минуту или две Thread.Sleep

Как лучше всего справиться с ситуацией такого типа?

Ответы [ 2 ]

2 голосов
/ 24 августа 2010

В этом случае, вероятно, лучше всего придерживаться Response.Redirect(), чтобы клиенту пользователя было выдано перенаправление, а не Server.Transfer(), который выполняет чисто перенаправление на стороне сервера в другой контекст.

Что касается процесса, который требует от пользователя ожидания, вы можете использовать какую-то асинхронную реализацию, в которой трудоемкая операция помещается в фоновый поток; тем временем пользователь вместо ожидания на пустом экране загрузки получает Response.Redirect() странице «Обработка», которая опрашивает сервер на предмет завершения текущей операции и обновляет пользователя. Для дополнительной полировки рассмотрите возможность использования чего-то вроде загрузчика изображений Facebook, который перекрывает индикатор выполнения в углу экрана, пока пользователь продолжает нормальное использование веб-сайта.

1 голос
/ 24 августа 2010

Из того, что я вижу, вам нужно сделать:

  1. Форма пользовательских сообщений POST к сценарию сервера
  2. Сервер делает что-то, что занимает минуту или две, используя Thread.Sleep
  3. Сервер выдает Response.Redirect

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

С точки зрения кода, это довольно просто:

  1. Это стандартный <FORM METHOD="POST"> код
  2. Делайте все, что вам нужно, не могу понять, зачем вам нужен поток. Спите в данный момент; Вы не хотите, чтобы перенаправление происходило сразу после завершения обработки на стороне сервера?
  3. Позвоните Response.Redirect("mypage.aspx"), чтобы выполнить GET

Это помогает?

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