2011-08-29 18 views
6

Estoy tratando de hacer una redirección HTTP 302, pero obtengo la siguiente excepción mientras estoy ejecutando en modo de depuración.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(); 

Para resumir, esta llamada no está vaciando la respuesta y no la reorientación.

¿Cómo puedo hacer que funcione?

+0

¿Compiló su aplicación en modo de depuración y ejecutándose de esa manera o compiló su aplicación en modo de lanzamiento y simplemente adjuntó el depurador al proceso? – Icarus

+0

Eche un vistazo aquí también http://automagical.rationalmind.net/2010/03/08/response-redirect-and-302-and-301-status-codes/ –

Respuesta

7

No debería estar llamando tanto End y Flush de esta manera - para redireccionar con HTTP 302 se debe utilizar HttpContext.Current.Response.Redirect ver http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

+0

¿esa redirección es 302? eso funcionó para mí, pero no estoy seguro de si eso es 302 – DarthVader

+0

SÍ - es, ver el enlace a MSDN en mi respuesta ... – Yahia

+0

@ user177883 no olvide votar/marcar como aceptado cualquier respuesta que fue de ayuda ... – Yahia

4

El objeto HttpResponse tiene un método para realizar una redirección 302.

Response.Redirect("page.aspx") 

Aunque su código debería funcionar bien, ya que es una forma común de implementar un 301 redirect.

Tenga en cuenta que response.Flush() es redundante, ya que la memoria de respuesta se vacía al cliente y ejecución finalizará el response.End(), por lo que no se ejecutará esa línea.

Una búsqueda en Google para otros con similar problems puntos a este artículo KB http://support.microsoft.com/kb/312629/EN-US/ que es probable que sea la causa de sus problemas.

+0

es esa redirección 302? eso funcionó para mí, pero no estoy seguro si eso es 302 – DarthVader

+0

Sí, es de acuerdo con la documentación, puede utilizar algo como Firebug o violinista para comprobar. –