ASP: перенаправить на страницу без заголовка и вернуться - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть страница .aspx, которая генерирует отчет с помощью элемента управления ReportViewer.Обычно вызывается с другой страницы с помощью Response.Redirect.

Эту страницу можно использовать несколькими способами.Пока страница генерирует ответ, такой как вложение MIME, она работает, как и ожидалось.Однако теперь я добавил возможность генерировать отчет и отправлять его в виде вложения электронной почты.В этом случае страница не имеет заголовка и сама по себе не дает ответа.Вместо этого я хочу перенаправить обратно на страницу вызова и показать сообщение об успехе, например:

Страница вызывающего абонента -> Нажатие кнопки -> Response.Redirect (страница отчета) -> отчет о процессе -> Response.Redirect(Страница вызывающего абонента)

Работает так, как задумано в Chrome, но не в IE (8).Отчет обрабатывается и электронная почта отправляется, но 2-е перенаправление не работает, и время ожидания браузера истекло.Я рассмотрел использование Server.Transfer для перенаправления на страницу ReportViewer.Тайм-аут все еще произошел в IE.

Не может ли быть 2 перенаправления в одном запросе?Чего мне не хватает, и есть ли лучший способ сделать это?Эта цитата из RFC1945 заставляет меня думать, что подход должен быть в порядке:

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

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

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

Исправление для этого было довольно обыденным. Метод, который отображает отчет и записывает его в файл, сделал Response.ClearContent (). Это был существующий код, который я перенес из другого приложения, где это требовалось. Как только я удалил вызов, последующее перенаправление стало работать даже в IE.

Окончательное решение выглядит так:

Страница звонящего -> Нажатие кнопки -> Проверка -> Server.Transfer (страница отчета) -> отчет о процессе -> Response.Redirect (страница звонящего)

Страница вызывающего абонента обновляется и показывает сообщение об успехе.

0 голосов
/ 27 апреля 2011

Могу ли я предложить альтернативный подход? Страница вызывающего абонента -> Нажатие кнопки -> POST -> отчет о процессе -> GetRequestStream (т.е. "OK / Error") -> Сделать что-то

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