2010-07-16 244 views
5

Recibo el siguiente error cuando dejo mi web inactiva por un tiempo¿No se puede llamar a la redirección de respuesta en la devolución de llamada de la página?

"Response.Redirect.can no se puede llamar en una devolución de llamada de página".

Estoy almacenando los identificadores de usuario en sesión y durante la carga de la página compruebo para ver si el ID de usuario existe, de lo contrario, los redirijo a la página de inicio de sesión.

Estoy usando controles devexpress, ¿Cómo puedo hacer que la redirección funcione?

+1

posible duplicado http: // stackoverflow.com/questions/1538749/how-to-avoid-response-redirect-cannot-be-called-in-a-page-callback –

+0

@Lucas - I don No lo creo Esa persona que pregunta solo quería detener el error y estaba contenta con el uso de 'if (! Page.IsCallback)' Creo que @Kyle quiere una forma de redirigir al usuario a la página de inicio de sesión si su sesión ha expirado. –

Respuesta

1

No se puede hacer que la redirección funcione en una devolución de llamada. Quizás en lugar de hacer Response.Redirect en el servidor, podría escribir algún valor en un bloque <script type="text/javascript"/> y establecer window.location.href (redirigir) en el lado del cliente.

2

Por lo general, puede desactivar las devoluciones de llamada para controles devexpress como ASPxGridView utilizando la propiedad "EnableCallbacks". Obviamente, esto hará que los controles usen devoluciones, pero también permitirá que Response.Redirect haga su trabajo.

2

HttpResponse.RedirectLocation propiedad en MSDN funciona para mí en el mismo problema

1

Se puede utilizar:

string TARGET_URL = ...; 
if(Page.IsCallback) 
    DevExpress.Web.ASPxClasses.ASPxWebControl.RedirectOnCallback(TARGET_URL); 
else 
    Response.Redirect(TARGET_URL); 

Consulte a KA18851 en DevExpress

Cuestiones relacionadas