2012-07-02 2 views
5

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

Детали:

  • IIS 7
  • .Net 4.0
  • Windows 2008
  • По умолчанию документ Login.aspx
  • Нет Перенаправление HTTP установлен на приложение или Login.aspx в IIS
  • Fiddler показывает Login.aspx, используя код статуса 302 и перенаправляясь на Login.aspx

Если я открываю свой сайт, он указывает на Login.aspx и застревает в петле 302. Если я открою сайт, но укажу на register.aspx, Fiddler показывает register.aspx, идущий в Login.aspx, который, конечно же, перенаправляется на Login.aspx.

Что я сделал:

  • Запуск веб-приложение из Visual Studio - все работает отлично
  • Check web.config для перенаправления команд - нет ни
  • Проверка IIS для перенаправления команд - есть ни
  • Посмотрите Скрипач на другую страницу в цикле - нет ни одного, только Login.aspx к login.aspx
  • Check login.aspx для перенаправления команд - нет ни одного
  • Контрольный код Login.aspx позади для перенаправления команд - нет ни
  • Запустите приложение на моем поле, используя web.config с сервера - все работает
  • Check login.aspx для перенаправления команд - нет ни одного
  • Очищенный Cache - проблема все еще сохраняется
  • переиздано - проблема все еще сохраняется
  • переизданы и очищаются кэш - проблема остается
  • нетрудоспособного документа по умолчанию в IIS
+0

Вы бежите за балансиром нагрузки, если это возможно? Вы уверены, что ваши переадресации точно такие же (т. Е. Не http против https)? – Paddy

+0

переадресации точно такие же. Нет https. Я не думаю, что я за балансиром нагрузки. –

+1

Использует ли ваш сайт какую-то переадресацию, скажем, окончания сеанса до Login.aspx? – Ross

ответ

2

Обнаружена проблема. Найдено эту логику в MasterPage:

Dim strPage As String = Request.Url.AbsolutePath.Replace("/", "") 
    'Check that user is logged in 
    If Not strPage = "Login.aspx" And Not strPage = "Register.aspx" Then 
     If Session("intUserId") Is Nothing Then 
      Response.Redirect("~/Login.aspx", True) 
     End If 
    End If 

Очевидно, strPage не равно Login.aspx при просмотре login.aspx на сервере.

Я должен был подумать об этом, когда я исследовал его. Спасибо Росс за ваш комментарий, это помогло мне найти это!

3

Поделитесь этим только в случае, если это ответ, поскольку это звучит как проблема, которую мы имели.

  1. Сайт ASP.net MVC с атрибутом [RequiresHttps] в нашем действии для входа.

  2. За балансиром нагрузки, который выполнял ускорение SSL (в результате получился запрос, который фактически удаляет код на стороне сервера, который уже декодирован и эффективно под http).

  3. Код сервера считает, что это проблема и перенаправляет обратно к себе с помощью https.

  4. Промыть и повторить.

+0

Спасибо, что поделились, но я не думаю, что это моя проблема. Я не использую MVC, SSL или балансировку нагрузки. –

+1

Mmm, так что не тождественно, но, возможно, стоит искать любые базовые классы/глобальный код, которые делают переадресацию, чтобы увидеть, можете ли вы что-нибудь там увидеть. – Paddy

+0

@Paddy - У меня ТОЧНО эта проблема за балансировщиком облачной нагрузки rackspace. Удалось ли вам это решить? –

0

Я столкнулся с подобной ошибкой. Но у меня была опечатка с двумя Response.Redirect спиной к спине.

If (conditon1){ 
    Response.Redirect("Page1.aspx"); 
} 
If (conditon2){ 
    Response.Redirect("Page2.aspx"); 
} 

И исправление было просто поставить другой если в блоке с еще.