Response.Redirect () не будет перенаправлять в Internet Explorer - PullRequest
0 голосов
/ 17 июня 2010

Я использую

Response.Redirect("someurl",true);

в событии page_preInit для перенаправления всех запросов, поступающих на страницу. Он хорошо работает на Firexox, но если я захожу на страницу из Internet Explorer 7/8, он говорит, что страница не найдена и не будет перенаправлять на новый URL.

Есть идеи, почему это происходит ??

Обновление:

Я попытался дать radom URL в редиректе, например google.com, и он отлично работает. На самом деле URL, который я пытаюсь перенаправить, не доступен на моей машине, он находится на другом VPN. Я предполагаю, что IE не изменит URL в адресной строке, если он не может получить доступ к URL. Firefox, с другой стороны, меняет адрес в адресной строке.

Ответы [ 3 ]

0 голосов
/ 18 июня 2010

Как я упоминал в обновлении, IE не будет изменять URL-адрес, если он возвращает 404. Поскольку у меня не было доступа к URL-адресу, который я перенаправляю, он возвращал 404. Но firefox ведет себя по-другому.

0 голосов
/ 05 июня 2014

У меня также была похожая проблема, когда Internet Explorer не перенаправлял с помощью стандартного вызова Response.Redirect.Я также видел ту же проблему на некоторых устройствах Android по WIFI, но которые правильно работали с сотовой связью.Очень странно.

Проблема в устаревшем методе перенаправления Microsoft в .NET.Некоторые сетевые маршрутизаторы и старые браузеры по-разному обрабатывают коды ответов.Вот изменение кода C #, которое исправило это:

СТАРЫЙ КОД:

 HttpContext.Current.Response.Redirect("www.mysite.com", true);

НОВЫЙ КОД:

 WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
 WebOperationContext.Current.OutgoingResponse.Headers.Add("Location", "www.mysite.com");
0 голосов
/ 17 июня 2010

Содержит ли ваш Response.Redirect блок try / catch? Это может вызвать проблемы с перенаправлением.

...