ASP.NET Страница вызывает дополнительную страницу aspx после загрузки

StackOverflow https://stackoverflow.com/questions/484928

Вопрос

Чтобы все было проще, у нас есть несколько aspx-страниц...

Страница 1.aspx - сбрасывает информацию о сеансе.
Страница 2.aspx - Форма поиска с результатами и установками переменных сеанса.
Страница 3.aspx, Страница 4.aspx, Страница 5.aspx - требовать, чтобы переменные сеанса были установлены на странице 2.aspx

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

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

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

Это было полезно?

Решение

Спасибо за совет, Эндрю.

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

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

На странице 2.aspx

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top