2012-07-02 21 views
5

Tengo una aplicación web que está atrapada en un ciclo infinito, y no tengo ni idea de dónde buscarla. Este es un sitio de intranet, por lo que no hay ningún enlace que pueda compartir, pero he enumerado todos los detalles que se me ocurren a continuación. Agradecería cualquier idea o sugerencia. Cualquiera lo ha hecho302 Infinite Loop

Los detalles:

  • IIS 7
  • .Net 4.0
  • Windows 2008
  • documento predeterminado es Login.aspx
  • Sin redirección HTTP puesta en aplicación o Login.aspx en IIS
  • Fiddler muestra Login.aspx usando el código de estado de 302 y redirigiendo a Login.aspx

Si abro mi sitio, apunta a Login.aspx y se atasca en un bucle 302. Si abro el sitio pero apunto a register.aspx, Fiddler muestra register.aspx yendo a Login.aspx que por supuesto redirige a Login.aspx.

Lo que he hecho:

  • Ejecutar la aplicación Web de Visual Studio - todo funciona bien
  • Comprobar web.config de comandos de redirección - no hay ninguno
  • Comprobar IIS para los comandos de redirección - no hay ninguno
  • Mira Fiddler para otra página en el bucle - no hay ninguno, simplemente Login.aspx a Login.aspx
  • Comprobar Login.aspx para los comandos de redirección - no hay ninguno
  • Comprobar código Login.aspx detrás de comandos de redirección - no hay ninguno
  • Ejecutar la aplicación en mi cuadro utilizando el web.config del servidor - todo funciona
  • Comprobar Login.aspx para los comandos de redirección - no hay ninguno
  • borras la memoria caché - problema persiste
  • republicada - problema persiste
  • republicado y borras la memoria caché - problema persiste
  • documento predeterminado en IIS discapacitados
+0

¿Está corriendo detrás de un equilibrador de carga por casualidad? ¿Estás seguro de que tus redireccionamientos son exactamente iguales (es decir, no http versus https)? – Paddy

+0

las redirecciones son exactamente las mismas. No https. No creo que esté detrás de un equilibrador de carga. –

+1

¿Su sitio utiliza algún tipo de redirección en, por ejemplo, la caducidad de la sesión a Login.aspx? – Ross

Respuesta

2

Ha encontrado el problema. Encontrado esta lógica en el 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 

Evidentemente, strPage no es igual a Login.aspx cuando se navega a Login.aspx en el servidor.

Debería haber tenido esto cuando lo estaba investigando. Gracias Ross por tu comentario, ¡me ayudó a encontrar esto!

3

Compartiremos esto en caso de que sea una respuesta, ya que parece un problema que tuvimos.

  1. ASP.net sitio MVC con [RequiresHttps] atributo en nuestra acción de inicio de sesión.

  2. Detrás de un equilibrador de carga que estaba haciendo la aceleración de SSL (lo que hace que la solicitud que realmente golpea el código del lado del servidor ya esté decodificada y efectivamente en http).

  3. El código del servidor considera que se trata de un problema y se redirige a sí mismo mediante https.

  4. Enjuague y repita.

+0

Gracias por compartir, pero no creo que este sea mi problema. No estoy usando MVC, SSL o balanceo de carga. –

+1

Mmm, por lo que no es idéntico, pero podría valer la pena buscar cualquier clase base/código global que esté haciendo redirecciones, para ver si puede encontrar algo allí. – Paddy

+0

@Paddy - EXACTAMENTE tengo este problema detrás de un balanceador de carga en la nube del rack. ¿Has logrado resolverlo? –

0

Me encontré con un error similar. Pero el mío era un error tipográfico con dos Response.Redirect hacia atrás.

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

Y la solución era simplemente poner la otra si en el bloque otra cosa.