2012-02-27 1 views
0

В моем приложении ASP.NET Web Forms у меня есть две страницы MyPage.aspx и Login.aspx.В ASP.NET Response.Redirect препятствует событию Page_Load целевого URL?

Когда пользователь находится в MyPage и требуется для входа на щелчки

<a href="~/Login.aspx?ref=~/MyPage.aspx">login</a> 

Пользователь доводится до Login.aspx, вводит имя пользователя и пароль и нажимает на кнопку входа , Обработчик события login_onClick выполняет некоторую операцию, а затем

myUrl = Request.QueryString["ref"]; 
Response.Redirect(myUrl); //myUrl = "~/MyPage.aspx" 

Когда страница перенаправил Page_Load событие не выпустили (или, по крайней мере, его обработчик события не выполняется). Является ли это типичным (действительно странным) поведением Response.Redirect? Если это так, то как я могу помешать этому поведению, чтобы стрелять Page_Load?

PS: Я пытался поставить Response.Cache.SetCacheability(HttpCacheability.NoCache) перед перенаправлением без успеха

+0

Вы все еще ищете дополнительные ответы на этот вопрос? Или вы решили это другим способом, которым вы можете поделиться с сообществом? –

+0

Проблема была очень глупой. Лицо, которое вначале разработало приложение, использовало абсолютные URL-адреса. Это означает, что когда он перенаправлялся, вместо перехода к версии разработки он переходил к абсолютному URL-адресу, который ссылался на живой сайт. Именно поэтому он никогда не входил в page_load во время отладки – CiccioMiami

+0

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

ответ

0

Чтобы браузера с помощью сохраненной копии целевого перенаправления, в вашем случае MyPage.aspx, вам необходимо обратиться в кэшировании и установите истечение срока действия MyPage.aspx, не помещая его перед перенаправлением. Редирект отправляет ответ обратно в клиентский браузер, сообщая ему, чтобы он запросил другую страницу. Удалив кеш непосредственно перед вызовом переадресации, он фактически сообщает браузеру, что он не кэширует текущую страницу, которая до сих пор является Login.aspx.

Смежные вопросы