usar instalar example como asp.net url-rewriting

asp.net - instalar - Server.Transfer vs. Context.RewritePath



url rewrite iis 10 (3)

Entiendo que ambos no cambian la URL que ve el cliente. ¿Hay algo en ellos que haga que uno de ellos sea preferible al otro?
Estoy planeando usarlo en Application_BeginRequest en Global.asax, pero también en la página aspx regular.


Context.RewritePath Asigna una ruta de reescritura interna y permite que la URL que se solicita difiera de la ruta interna al recurso. RewritePath se utiliza en el estado de sesión sin cookies.

Mientras que Server.transfer transfiere el contenido ensamblado para el procesamiento de una página a otra.


Para evitar la excepción lanzada por Server.Transfer, puede usar Server.Execute. Tanto Server.Transfer como Server.Execute NO emiten un mensaje HTTP 302. Solo Response.Redirect emite este encabezado y le pide al navegador que vaya al nuevo destino, alegando que se movió temporalmente. Tanto Server.Transfer como Server.Execute le permiten ejecutar una página diferente para atender la solicitud actual.


Creo que Context.RewritePath() es la mejor opción. Razón:

Server.Transfer() lanza una ThreadAbortException todo el tiempo. El resultado de llamar a Response.End() .

Para más detalles, lea los siguientes artículos de MS:

Más información:
Server.Transfer() no envía un comando HTTP 302 de redirección como lo haría Response.Redirect() .

De acuerdo con HttpContext.RewritePath en MSDN , RewritePath() se utiliza en el estado de sesión sin cookies.

Además, en un tema diferente, Server.Transfer() y Server.Execute() son muy diferentes:

Server.Execute() devuelve el control a la página inicial inmediatamente después de donde se llamó.

Por ejemplo:

<div> test 1 <br/> <% Server.Execute("include.aspx?hello=ok"); %> test 2 <br/> </div>

Saldría:

prueba 1
contenido de include.aspx? hello = ok
prueba 2