Redirect () vs RedirectPermanent () en ASP.NET MVC

80

¿Cuál es la diferencia entre Redirect()y RedirectPermanent(). Había leído algunos artículos, pero no entiendo cuándo debemos usar Redirect()y RedirectPermanent(). ¿Puede mostrar algunos ejemplos?

IFrizy
fuente

Respuestas:

146

La diferencia básica entre los dos es que RedirectPermanentenvía al navegador un HTTP 301código de estado (Movido permanentemente) mientras Redirectque enviará un HTTP 302código de estado.

Úselo RedirectPermanentsi el recurso se ha movido de forma permanente y ya no será accesible en su ubicación anterior. La mayoría de los navegadores almacenarán en caché esta respuesta y realizarán la redirección automáticamente sin volver a solicitar el recurso original.

Úselo Redirectsi el recurso puede estar disponible en la misma ubicación (URL) en el futuro.

Ejemplo

Digamos que tiene usuarios en su sistema. También tiene la opción de eliminar usuarios existentes. Su sitio web tiene un recurso /user/{userid}que muestra los detalles de un usuario determinado. Si el usuario ha sido eliminado, debe redirigirlo a la /user/does-not-existpágina. En este caso:

Si el usuario nunca se restaurará nuevamente, debe usarlo RedirectPermanentpara que el navegador pueda ir directamente a /user/does-not-existen solicitudes posteriores incluso si la URL apunta a /user/{userid}.

Si el usuario se puede restaurar en el futuro, debe usar un archivo Redirect.

Meryovi
fuente
6
Tenga en cuenta que RedirectPermanentpuede ser molesto durante la depuración porque la segunda vez que haga clic, la acción del controlador se omitirá y no se alcanzará ningún punto de interrupción en la función original si se redirige a otra parte. Eso es a menos que vacíe su caché antes de cada clic.
Antoine Pelletier
Si alguna vez cometió el error de hacer un mal uso del redireccionamiento permanente, ¿hay alguna manera de comunicarlo a un navegador que ya lo visitó y recibió un redireccionamiento permanente?
eaglei22
17

RedirectPermanentes 301 y Redirectes el código de estado 302

dm03514
fuente
12
Como referencia, los navegadores pueden recordar el 301 y nunca volver a acceder a la URL original si así lo desean, mientras que un 302 indica que deben volver a verificar cada vez que el redireccionamiento aún está allí. Las implementaciones reales pueden variar, por supuesto, pero esa es la intención detrás de 301 y 302
Michael Stum
1

Envían diferentes códigos de respuesta al navegador. 301 es una redirección permanente, 302 una temporal. El efecto final es el mismo, pero si el cliente quiere indexar enlaces (el cliente más común que hace esto serán los motores de búsqueda) entonces un redireccionamiento permanente le dice al cliente que actualice sus registros para ignorar el enlace anterior y comenzar a usar el nuevo . Una redirección temporal le dice al cliente que la página se está redireccionando por ahora, pero no para eliminar el enlace anterior de su base de datos de indexación

Abhishek Saha
fuente