ASP.NET Page вызывает дополнительную страницу aspx после загрузки - PullRequest
0 голосов
/ 27 января 2009

Для простоты у нас есть несколько страниц aspx ...

Page1.aspx - сбрасывает информацию о сеансе.
Page2.aspx - Форма поиска с результатами и набором переменных сеанса.
Page3.aspx, Page4.aspx, Page5.aspx - требуются переменные сеанса, установленные в Page2.aspx

Мы обнаружили, что при загрузке Page2.aspx и установке переменных Session вызывается Page1.aspx и происходит сброс сеанса. Однако Page1.aspx отображается в браузере, а не Page2.aspx. Мы смогли обнаружить это только тогда, когда прошли через код и поместили точки останова в события Page_Load для Page1.aspx и Page2.aspx и были удивлены, увидев, что Page2.aspx обрабатывается, как только Page1.aspx прекратил обработку сервер.

Возможно, полезная информация ... мы используем главную страницу, и на главной странице есть ссылки на Page1.aspx. Кроме этого, я не могу найти никаких ссылок на Page1.aspx в базе кода.

обновление:
Это может быть связано с аутентификацией? Похоже, что когда я захожу на страницу Page2.aspx, возможно, сервер снова аутентифицируется на Page1.aspx? Это типично?

Ответы [ 2 ]

1 голос
/ 28 января 2009

Спасибо за отзыв, Андрей.

Мы выяснили, что происходит ... Page1.aspx в приложении действительно Default.aspx. На Page2.aspx другой разработчик поместил тег img на страницу, для которой не определено свойство src. Поэтому, когда Page2.aspx запустился, он искал изображение, расположенное на корневом уровне веб-сайта, после чего активировал код Default.aspx (Page1) и удалил сеанс.

В целом это выглядело примерно так ...

На Page2.aspx

<img src=""> <!-- this ended up triggering a call to Default.aspx, wiping the session -->

Надеюсь, это поможет кому-то еще.

0 голосов
/ 28 января 2009

Запустите Fiddler и запустите приложение в обычном режиме. Он расскажет вам о трафике и определит, какие страницы перенаправляются на другие страницы. Узнав путь, вы можете определить, почему этот путь существует, изучив исходный код.

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

Если это так, в качестве быстрого решения вы можете использовать StateServer или сохранить переменные сеанса в Sql Server. Ваш домен приложения не должен перерабатываться каждую минуту, но это может вызвать поведение, которое вы видите, если храните сеансы «в процессе», что является значением по умолчанию.

...