302 bucle infinito

Tengo una aplicación web que está atascada en un bucle infinito y no tengo idea de dónde buscar a continuación. 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 tiene

Los detalles:

  • IIS 7
  • .Net 4.0
  • Windows 2008
  • El documento predeterminado es Login.aspx
  • Sin redireccionamiento HTTP establecido en la 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.

Qué he hecho:

  • Ejecute la aplicación web desde Visual Studio: todo funciona bien
  • Verifique web.config para ver los comandos de redirección; no hay ninguno
  • Verifique IIS para ver los comandos de redirección; no hay ninguno
  • Busque en Fiddler otra página en el bucle: no hay ninguna, solo Login.aspx a Login.aspx
  • Verifique Login.aspx para ver los comandos de redirección; no hay ninguno
  • Verifique el código Login.aspx detrás de los comandos de redirección; no hay ninguno
  • Ejecute la aplicación en mi caja usando web.config desde el servidor: todo funciona
  • Verifique Login.aspx para ver los comandos de redirección; no hay ninguno
  • Caché borrado: el problema persiste
  • Republicado: el problema persiste
  • Caché republicado y borrado: el problema aún persiste
  • Documento predeterminado deshabilitado en IIS

preguntado el 02 de julio de 12 a las 15:07

¿Está corriendo detrás de un balanceador de carga por casualidad? ¿Está seguro de que sus redireccionamientos son exactamente iguales (es decir, no http versus https)? -

las redirecciones son exactamente iguales. Sin https. No creo que esté detrás de un balanceador de carga. -

¿Su sitio utiliza algún tipo de redireccionamiento, por ejemplo, al expirar la sesión a Login.aspx? -

Gracias por comentar @Ross. Encontré un bloque de código que me perdí por completo, que resultó ser el problema. -

3 Respuestas

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

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

  2. Detrás de un equilibrador de carga que estaba acelerando SSL (lo que da como resultado que la solicitud que realmente llega al código del lado del servidor ya esté decodificada y efectivamente bajo http).

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

  4. Enjuague y repita.


Ha pasado bastante tiempo desde que se respondió esto, y mi comentario a continuación aquí para 'no usar RequireHttps' probablemente esté un poco desactualizado.

Cualquiera que mire esta respuesta y piense que responde a su problema probablemente haría bien en considerar la configuración de su balanceador de carga para usar encabezados X-Forwarded-Proto:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto

Y luego configurando su sitio MVC para poder leer estos y aún pensar que están bajo HTTPS en el borde de su entorno:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-6.0

Respondido el 16 de diciembre de 21 a las 08:12

Gracias por compartir, pero no creo que este sea mi problema. No estoy usando MVC, SSL o equilibrio de carga. - johnie karr

Mmm, no son idénticos, pero podría valer la pena buscar cualquier clase base/código global que esté haciendo redireccionamientos, para ver si puedes detectar algo allí. - Paddy

@Paddy: tengo EXACTAMENTE este problema detrás de un balanceador de carga en la nube de rackspace. ¿Conseguiste solucionarlo? - Chris Wallis

Bueno, la respuesta fue no usar el atributo 'RequiresHttps' y, en su lugar, implementar nuestra propia redirección SSL en global.asax. - Paddy

Encontré el problema. Encontré esta lógica en 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 busca Login.aspx en el servidor.

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

Respondido 02 Jul 12, 16:07

Me había encontrado con un error similar. Pero el mío fue un error tipográfico con dos Respuesta.Redirección espalda con espalda.

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

Y la solución fue simplemente poner el otro if en la más bloquear.

Respondido el 30 de junio de 17 a las 23:06

Mismo problema, también debido a condiciones conflictivas dentro de nuestro propio código. Se permitió que la página se redireccionara a sí misma bajo una condición, pero el código para corregir la condición no se activó, lo que resultó en una redirección infinita. Pensé que era un problema de IIS, pero no, nos disparamos en el pie... - daniel bragg

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.