2012-07-02 15 views
5

Possiedo un'applicazione Web bloccata in un ciclo infinito e non ho idea di dove guardare dopo. Questo è un sito intranet, quindi non c'è nessun link che posso condividere, ma ho elencato tutti i dettagli che riesco a pensare di seguito. Gradirei qualsiasi idea o suggerimento. Qualcuno ha.302 Infinite Loop

I dettagli:

  • IIS 7
  • .Net 4.0
  • Windows 2008
  • documento di default è Login.aspx
  • No reindirizzamento HTTP impostato su app o Login.aspx in IIS
  • Fiddler mostra Login.aspx utilizzando il codice di stato di 302 e reindirizzamento a Login.aspx

Se apro il mio sito, punta a Login.aspx e rimane bloccato in un ciclo 302. Se apro il sito ma punto per register.aspx, Fiddler mostra register.aspx andando a Login.aspx che ovviamente reindirizza a Login.aspx.

Quello che ho fatto:

  • Eseguire il webapp da Visual Studio - tutto funziona bene
  • Controllare web.config per i comandi di reindirizzamento - non ce ne sono
  • Controllare IIS per i comandi di reindirizzamento - non ce ne sono
  • Guarda Fiddler per un'altra pagina nel ciclo - non ce ne sono, solo per Login.aspx Login.aspx
  • Controllare Login.aspx per i comandi di reindirizzamento - non ce ne sono
  • Controllare il codice Login.aspx dietro per i comandi di reindirizzamento - non ce ne sono
  • eseguire l'applicazione sulla mia casella di utilizzare il web.config dal server - tutto funziona
  • Controllare Login.aspx per i comandi di reindirizzamento - non ce ne sono
  • Cancellato cache - problema persiste
  • ripubblicato - problema persiste
  • ripubblicato ed eliminato cache - problema persiste
  • disabili documento predefinito in IIS
+0

Sei in esecuzione dietro un bilanciamento del carico per caso? Sei sicuro che i tuoi reindirizzamenti siano esattamente gli stessi (ad esempio non http contro https)? – Paddy

+0

i reindirizzamenti sono esattamente gli stessi. No https. Non penso di essere dietro un bilanciatore del carico. –

+1

Il tuo sito utilizza una sorta di reindirizzamento su, ad esempio, la scadenza della sessione su Login.aspx? – Ross

risposta

2

Trovato il problema. Trovato questa logica nel 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 non è uguale Login.aspx durante la navigazione per Login.aspx sul server.

Avrei dovuto farlo quando lo stavo investigando. Grazie Ross per il tuo commento, mi ha aiutato a trovare questo!

3

Lo condivideremo solo nel caso in cui sia una risposta, poiché sembra un problema che abbiamo riscontrato.

  1. ASP.net Sito MVC con attributo [RequiresHttps] sulla nostra azione di accesso.

  2. Dietro un servizio di bilanciamento del carico che stava eseguendo l'accelerazione SSL (con conseguente richiesta che effettivamente colpisce il codice lato server già decodificato ed efficacemente in http).

  3. Il codice server pensa che questo sia un problema e reindirizza a se stesso utilizzando https.

  4. Risciacquare e ripetere.

+0

Grazie per la condivisione, ma non penso che questo sia il mio problema. Non sto utilizzando MVC, SSL o bilanciamento del carico. –

+1

Mmm, quindi non identico, ma potrebbe valere la pena cercare qualsiasi classe base/codice globale che stia eseguendo i reindirizzamenti, per vedere se è possibile individuare qualcosa lì. – Paddy

+0

@Paddy - Ho ESATTAMENTE questo problema dietro un sistema di bilanciamento del carico del cloud rackspace. Sei riuscito a risolverlo? –

0

Avevo riscontrato un errore simile. Ma il mio era un errore di battitura con due Response.Redirect back to back.

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

E la correzione è stata semplicemente mettere l'altro se nel blocco altro.