2012-05-04 4 views
0

У нас есть сайт, на котором мы Response.Redirect на страницу (страница с тележкой), и по какой-либо причине функции Page_Init и Page_Load не вызывают для этой страницы, когда используя IE8. Даже если я поместил курсор в строку URL и нажал Enter, они все равно не будут вызваны. Когда я нажимаю F5, он вызывается. Когда я использую другой браузер (включая IE9 в режиме IE8), они вызываются. Я запустил Fiddler2, чтобы проверить трафик, и никакого трафика не происходит, когда я нажимаю на строку URL и нажимаю кнопку ввода, даже если вы видите, что иконка в мире вращается, и кажется, что она делает материал в течение 1/2 секунды.В IE8, Page_Init не набирается

Что может вызывать такое поведение? Похоже, что это должен быть Javascript и/или панель обновления, которая перехватывает страницу_Load.

Особенности: Сайт является AbleCommerce, а страница является страницей. Мы настроили процесс выбора продукта.

Я могу реплицировать проблему в нашем тестовом экземпляре сайта, поэтому я добавил точки останова для функций Page_Init и Page_Load пользовательского элемента управления, который загружает тележку. В IE8 я могу поместить свой курсор в строку url IE8 и нажать Enter, а точки останова никогда не попадут. В любом другом браузере они попадают. Запуск IE9 в режиме браузера IE8, они попадают. Но в IE8 они попадают только при обновлении (F5).

Я думаю, что это должно быть проблема с Javascript или Update Panel. В консоли Firefox Error или в IE8 нет ошибок Javascript.

Любые мысли о том, что может быть причиной этого? Или как я могу их устранить?

+2

Try для вызова страницы с дополнительным параметром, как '& _ = xyz' где 'xyz' всегда свежие (например, текущее время tostring). Если страница обновляется дополнительным параметром, у вас есть проблема с кешированием, в которой браузер слишком агрессивно кэшируется. Почему так может быть - трудно сказать. Это может быть проблема jquery, когда вы вызываете URL-адрес с включенным полным кэшированием, а затем браузер выбирает настройку кэширования внутри себя и никогда не перезванивает вашу страницу. –

+0

Добавление параметра строки запроса вызывает сообщение PostBack. Я полагаю, что быстрое обходное решение заключается в том, чтобы добавить случайный параметр querystring в response.redirect. – EfficionDave

+0

Могу ли я опубликовать это как ответ? –

ответ

1

Попробуйте позвонить на свою страницу с дополнительным параметром, например &_=xyz, где xyz всегда свежие (например, текущее время tostring). Если страница обновляется дополнительным параметром, у вас есть проблема с кешированием, в которой браузер слишком агрессивно кэшируется.

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

+0

Спасибо! Это оказалось эффективным способом решения моей проблемы. – EfficionDave

+0

Я все еще удивляюсь, какова реальная причина, хотя ... –

+0

Как и я. Если вы хотите копать дальше, сайт www.makaboo.com. Просто добавьте и персонализируйте продукт, и вы попадете на страницу корзины и сможете посмотреть. – EfficionDave

0

У меня была ваша же проблема ... Это из-за тяжелых вариантов кэша в IE. Таким образом, вместо того, чтобы использовать случайные переменный, я установил весь кэш ответ на ложный ан каждый постбэк, как это:

protected void Page_Load(object sender, EventArgs e) 
{ 
     Response.Cache.SetNoStore(); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetExpires(DateTime.Now); 
     Response.Cache.SetLastModified(DateTime.Now); 
     Response.Cache.SetAllowResponseInBrowserHistory(false); 
     .... 
} 

Источник: Page_Load called in Firefox, but not IE

1

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

Посмотрите на принятый ответ на этот переполнением стека вопрос, чтобы узнать, как установить заголовки кэша в самых популярных языках: Making sure a web page is not cached, across all browsers

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