Me dijeron que Respond.Redirect es un proceso costoso porque genera una excepción ThreadAbortException. Entonces, en su lugar, deberíamos usar la función CompleteRequest. Así que lo probé, pero noté que los códigos debajo aún se ejecutan, lo que no quiero. Quiero forzar instantáneamente al navegador para saltar a otro sitio web.ApplicationInstance.CompleteRequest no detiene la ejecución del código debajo de él?
Public Shared Sub TestCompleteRequest()
If 1 = 1 Then
System.Web.HttpContext.Current.Response.Redirect("Http://Google.com", False)
System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest()
End If
Throw New ApplicationException("Hello, why are you here?")
End Sub
En cuanto al código anterior, todavía se emite ApplicationException. ¿Pero por qué? :(
Hola Greg, gracias por tu respuesta. Esto es lo que se supone que debe hacer el código. Si un usuario entra en la página y no está conectado, me gustaría redirigirlo a otra página de inicio de sesión. Por lo tanto, la declaración 'IF' en el código anterior debe ser 'si el usuario no inicia sesión, luego redirija aquí' e ignore todos los códigos debajo de él. – Lasker
En ese caso, tendría que usar 'Response.Redirect (string)' en el bloque if, o regresar desde el Sub justo después de la llamada a 'CompleteRequest()'. Creo que en VB.NET puedes poner 'Return' antes del' End If'. – greg84
Sí, creo que iré con la opción CompleteRequest e intentaré no ejecutar ningún otro código después de ella. ¡Gracias! :) – Lasker