Response.Redirect ("page.aspx") не всегда работает - PullRequest
0 голосов
/ 16 декабря 2009

В моем приложении этот код:

CreditsSubjectsNamesTeacherCount n = new CreditsSubjectsNamesTeacherCount();
Session["UserID"] = n.GenerateTeacherCountCrossRegions(txtStartYear.Text.CheckOnEmptyYear(), ((UserInformation)Session["UserInformation"]).UserName);
Response.Redirect("page.aspx");


не перенаправляет, если метод GenerateTeacherCountCrossRegions выполнялся в течение длительного времени (~> 10 минут). Что может вызвать эту проблему?
PS: добавлено:
<httpRuntime executionTimeout="18000".. > но это не помогло.
Спасибо.

Ответы [ 3 ]

3 голосов
/ 16 декабря 2009

Время ожидания запроса истекло. Response.Redirect отправляет HTTP-ответ с просьбой к браузеру запросить другую страницу - если время запроса истекло в браузере, он не примет этот ответ.

2 голосов
/ 16 декабря 2009

Браузер перестал ждать страницу, поэтому соединение больше не установлено. Сервер просто отправляет перенаправление в void, где никто не слушает.

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

Для связи с фоновым потоком необходим объект, на который ссылаются оба потока. Вы можете сохранить ссылку на объект в переменной сеанса, чтобы страница, проверяющая состояние, имела к ней доступ.

0 голосов
/ 16 декабря 2009

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

Для длительных операций такого типа рассмотрим другой интерфейс.

Я создал систему, в которой анализируемые данные отправляются пользователю по электронной почте, когда они рассчитываются: внутренне я создал поток BackgroundWorker для вычисления, который затем использует MailMessage для отправки сообщить в виде PDF-файла.

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