ASP-Classic - как я могу очистить заголовок перенаправления, помещенный туда Response.Redirect? - PullRequest
2 голосов
/ 23 марта 2011

Я работаю с скомпилированным объектом VB6, вызываемым страницей ASP. Буферизация ответа включена. Мой код вызывает другой скомпилированный компонент VB, который может вызвать Response.Redirect (), но продолжить выполнение и вернуть управление моему коду. Затем я могу захотеть вызвать Response.redirect самостоятельно. Однако, похоже, что это создает массив для заголовка, а не перезаписывает предыдущий URL:

Код:

  Call m_oResponse.Redirect("http://google.com")
  Call m_oResponse.Redirect("http://yahoo.com")

Результирующий http ответ:

 HTTP/1.1 302 Object moved
 ...
 Location: http://google.com,http://yahoo.com
 ...
 Date: Wed, 23 Mar 2011 18:14:17 GMT
 Connection: keep-alive

Я попробовал Response.Clear, но, похоже, это не влияет на заголовки.

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Насколько я знаю, Response.Redirect() прекращает обработку страницы и немедленно выполняет перенаправление. Обычно ваш код не может продолжить обработку после этого, поэтому вы ничего не можете сделать, чтобы избежать перенаправления.

MSDN говорит:

Любое содержимое тела ответа, например отображаемый текст HTML или Response.Write текст на странице, обозначенной Исходный URL игнорируется. Тем не менее, это метод отправляет другие заголовки HTTP устанавливается на этой странице, обозначенной Оригинальный URL для клиента. тело автоматического ответа, содержащее URL переадресации как ссылка генерируется.

http://msdn.microsoft.com/en-us/library/ms524309.aspx

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

Если упомянутый вами компонент VB является внешним компонентом, а не просто другим ASP-файлом, включенным в директиву <!--#include file="other_script.asp"-->, тогда он продолжит выполнение, а ваша вызывающая ASP-страница - нет.

0 голосов
/ 28 марта 2011

Есть ли у вас источник для скомпилированного компонента?

т.е. можно ли его переписать, вместо того, чтобы вызывать само перенаправление, просто вернуть URL-адрес для перенаправления?

...