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

80

Was ist der Unterschied zwischen Redirect()und RedirectPermanent(). Ich hatte einige Artikel gelesen, aber ich verstehe nicht , wann müssen wir nutzen Redirect()und RedirectPermanent(). Können Sie ein Beispiel zeigen?

IFrizy
quelle

Antworten:

146

Der grundlegende Unterschied zwischen beiden besteht darin, dass RedirectPermanentdem Browser ein HTTP 301Statuscode (dauerhaft verschoben) gesendet Redirectwird, während ein HTTP 302Statuscode gesendet wird.

Verwenden Sie RedirectPermanentdiese Option, wenn die Ressource dauerhaft verschoben wurde und an ihrem vorherigen Speicherort nicht mehr verfügbar ist. Die meisten Browser speichern diese Antwort im Cache und führen die Umleitung automatisch durch, ohne die ursprüngliche Ressource erneut anzufordern.

Verwenden Sie Redirectdiese Option, wenn die Ressource in Zukunft möglicherweise am selben Speicherort (URL) verfügbar ist.

Beispiel

Angenommen, Sie haben Benutzer in Ihrem System. Sie haben auch die Möglichkeit, vorhandene Benutzer zu löschen. Ihre Website verfügt über eine Ressource /user/{userid}, die die Details eines bestimmten Benutzers anzeigt. Wenn der Benutzer gelöscht wurde, müssen Sie zur /user/does-not-existSeite umleiten . In diesem Fall:

Wenn der Benutzer nie wieder wiederhergestellt wird, sollten Sie ihn verwenden, RedirectPermanentdamit der Browser /user/does-not-existbei nachfolgenden Anforderungen direkt darauf zugreifen kann, auch wenn die URL auf verweist /user/{userid}.

Wenn der Benutzer in Zukunft wiederhergestellt werden kann, sollten Sie einen regulären Benutzer verwenden Redirect.

Meryovi
quelle
6
Beachten Sie, dass RedirectPermanentdies beim Debuggen ärgerlich sein kann, da beim zweiten Klicken die Aktion des Controllers übersprungen wird und in der ursprünglichen Funktion kein Haltepunkt erreicht wird, wenn sie an eine andere Stelle umgeleitet wird. Es sei denn, Sie leeren Ihren Cache vor jedem Klick.
Antoine Pelletier
Wenn Sie jemals den Fehler gemacht haben, die permanente Weiterleitung zu missbrauchen, gibt es eine Möglichkeit, dies einem Browser mitzuteilen, der bereits eine permanente Weiterleitung besucht und erhalten hat?
eaglei22
17

RedirectPermanentist 301 und Redirectist 302 Statuscode

dm03514
quelle
12
Als Referenz können sich Browser an die 301 erinnern und nie wieder die ursprüngliche URL aufrufen, wenn sie dies wünschen, während eine 302 angibt, dass sie jedes Mal erneut prüfen sollten, ob die Weiterleitung noch vorhanden ist. Die tatsächlichen Implementierungen können natürlich variieren, aber das ist die Absicht hinter 301 und 302
Michael Stum
1

Sie senden unterschiedliche Antwortcodes an den Browser. 301 ist eine permanente Weiterleitung, 302 eine temporäre. Der Endeffekt ist der gleiche, aber wenn der Client Links indizieren möchte (der häufigste Client, der dies tut, sind Suchmaschinen), weist eine permanente Umleitung den Client an, seine Datensätze zu aktualisieren, um den alten Link zu ignorieren und den neuen zu verwenden . Eine temporäre Umleitung teilt dem Client mit, dass die Seite derzeit umgeleitet wird, der alte Link jedoch nicht aus seiner Indizierungsdatenbank gelöscht werden soll

Abhishek Saha
quelle