2011-08-29 16 views
6

Sto cercando di eseguire un reindirizzamento HTTP 302, ma ottenendo la seguente eccezione mentre sono in esecuzione in modalità di debug.Http Redirect 302

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack 

var response = HttpContext.Current.Response; 
response.Clear(); 
response.Status = "302 Found"; 
response.AddHeader("Location", "http://google.com"); 
response.End(); 
response.Flush(); 

lunga storia breve, questa chiamata non è vampate di calore la risposta e non il reindirizzamento.

Come posso farlo funzionare?

+0

Hai compilato la tua app in modalità di debug e sei in esecuzione in questo modo o hai compilato la tua app in modalità di rilascio e hai semplicemente collegato il debugger al processo? – Icarus

+0

Dai un'occhiata anche qui http://automagical.rationalmind.net/2010/03/08/response-redirect-and-302-and-301-status-codes/ –

risposta

7

Non si dovrebbe essere chiamando sia End e Flush in questo modo - per il reindirizzamento HTTP con 302 si dovrebbe usare HttpContext.Current.Response.Redirect vedere http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

+0

è il reindirizzamento 302? che ha funzionato per me, ma non sono sicuro se questo è 302 – DarthVader

+0

SÌ - è, vedere il link a MSDN nella mia risposta ... – Yahia

+0

@ user177883 per favore non dimenticare di upvote/mark come accettato qualsiasi risposta che è stata d'aiuto ... – Yahia

4

L'oggetto HttpResponse ha un metodo per eseguire un redirect 302.

Response.Redirect("page.aspx") 

Anche se il codice dovrebbe funzionare bene anche come questo è un modo comune per implementare un 301 redirect.

Si noti che response.Flush() è ridondante poiché il buffer di risposta viene svuotato sul client e l'esecuzione terminerà su response.End(), in modo tale che la linea non venga eseguita.

Una ricerca google per gli altri con similar problems punti a questo articolo KB http://support.microsoft.com/kb/312629/EN-US/ che è probabile che sia la causa dei vostri problemi.

+0

è il reindirizzamento 302? che ha funzionato per me, ma non sono sicuro che sia 302 – DarthVader

+0

Sì, secondo la documentazione, puoi usare qualcosa come Firebug o Fiddler per controllare. –

Problemi correlati