Событие жизненного цикла приложения не срабатывает, когда Server.Transfer - PullRequest
0 голосов
/ 26 июля 2010

У меня есть специальный модуль перезаписи, и когда передаются определенные параметры строки запроса, мне нужно иметь возможность вызывать server.transfer, а не response.redirect из-за программного обеспечения adserve и отслеживания

в событии InitRewriteModule я регистрирую события:

BeginRequest PreRequestHandlerExecute ReleaseRequestState

, когда вызывается Response.Redirect, на самом деле вызывается событие ReleaseRequestState, и модуль перезаписи завершен, а новые URL-адреса управления установлены

когда вызывается Server.Transfer, то событие ReleaseRequestState не вызывается, и дружественные URL не заданы

Мне кажется, я понимаю разницу между Response.Redirect и Server.Transfer, но я не могувыяснить, почему событие на самом деле не вызывается - вызывается ли событие Session.End или Session.Abandon, и это событие никогда не вызывается?или здесь происходит что-то совершенно другое

спасибо

Пол

1 Ответ

0 голосов
/ 26 июля 2010

Я предполагаю, что это тонкие различия между ними.

Response.Redirect выполняет перенаправление на стороне клиента. Это означает, что браузеру клиента отправляется сообщение, запрашивающее запрос другого URL-адреса и, следовательно, новый запрос.

Server.Transfer не создает новый запрос (http://msdn.microsoft.com/en-us/library/y4k58xk7.aspx). Он просто перестает работать на текущей странице и начинает работу на другой странице - нового запроса нет.

...