2012-02-13 10 views
17

im tener confusión con la que uno es mejor o efecto para la petición de llamar a la página (primera página) y la página de llamada (nueva página) ...Server.Transfer() vs. Server.Execute()

noto que en los dos casos, la URL en el navegador sigue siendo la primera URL de la página (no se actualiza a la nueva URL de la página) ya que no se solicita al navegador que lo haga.

cualquier comentario apreciables ....

+0

http://stackoverflow.com/questions/521527/response-redirect-vs-server-transfer –

+0

@Thit - Response.Redirect es otra cosa – StuartLC

+0

@ThitLwinOo, pregunta sobre 'Server.Transfer vs Server.Execute' , no sobre 'Response.Redirect vs. Server.Transfer'. –

Respuesta

20

Orignal en: Difference between Server.Transfer and Server.Execute

se introdujeron Tanto Server.Transfer y Server.Execute en ASP clásico 3.0 (y todavía trabajan en ASP.NET).

Cuando se utiliza Server.Execute, se le pasa una URL como parámetro y el control se mueve a esta nueva página. La ejecución del código ocurre en la nueva página. Una vez que se completa la ejecución del código, el control vuelve a la página inicial, justo después de donde se llamó. Sin embargo, en el caso de Server.Transfer, funciona de manera muy similar, la diferencia es que la ejecución se detiene en la nueva página (significa que el control no se devuelve a la página de llamada).

En ambos casos, la URL en el navegador sigue siendo la url de la primera página (no se actualiza a la nueva URL de la página) ya que no se solicita al navegador que lo haga.

2

Sé que esto es viejo, pero apareció como el primer o segundo hit cuando busqué en google. Hice algunas pruebas y quería publicar los resultados.

Creé un sitio web con 2 páginas. Carga de la página en la primera página contenía el código ..

try { 
    //Response.Redirect("~/WebForm2.aspx"); 
    //Server.Transfer("~/WebForm2.aspx"); 
    //Server.Execute("~/WebForm2.aspx"); 
    //Server.TransferRequest("~/WebForm2.aspx"); 

    string strTry = "Try"; 
} catch (Exception) { 
    string strCatch = "Catch"; 
} finally { 
    string strFinally = "Finally"; 
} 

La secuencia de lo que hizo por cada uno es lo que era realmente interesante ...

 
Command   Sequence    
Redirect   Call, Catch (ThreadAbortException), Finally, Load Page 2 
Transfer   Call, Load Page 2, Catch (ThreadAbortException), Finally 
Execute   Call, Load Page 2, Try (continues), Finally 
TransferRequest Call, Try (continues), Finally, Load Page 2 

.. Por lo tanto, puede ayudar a saber qué ordena que te gusten las cosas que ocurren en.

Personalmente, me gusta la idea del final del código actual, ANTES de que comience el código de la página siguiente. Entonces, ya sea Redirigir o Transferir solicitud, aunque con este último, puede que tenga que agregar un "retorno" justo debajo de su llamada si realmente desea que no ejecute el resto del bloque de prueba.

2

Creo que esto puede ayudarle a

Server.Transfer

Server.Transfer se utiliza para transferir el control de una página a otra página. Controle el código de ejecución en otra página, pero el control no regresa a la página anterior. En este caso, la URL no cambia en el navegador. no puede navegar a páginas externas de la aplicación. Sintaxis: Server.Transfer ("URL de otra página"); Puede acceder al control de página anterior en la página nueva. PreviousPage.FindControl() está disponible en la página nueva. Conserva los recursos del servidor al evitar ese viaje de ida y vuelta adicional.

Server.Execute

Server.Execute se utiliza para transferir el control de una página a otra página. Controla el código de ejecución en otra página y regresa a la página anterior. En este caso, la URL no cambia en el navegador. no puede navegar a páginas externas de la aplicación. Sintaxis: Server.Execute ("URL de otra página"); Puede acceder al control de página anterior en la página nueva. PreviousPage.FindControl() está disponible en la página nueva. Conserva los recursos del servidor al evitar ese viaje de ida y vuelta adicional.

Cuestiones relacionadas