在ASP.NET MVC中redirect()与RedirectPermanent()

Redirect()RedirectPermanent()之间有什么区别。 我读过一些文章,但是我不明白什么时候必须使用Redirect()RedirectPermanent() 。 你能举一个例子吗?

两者之间的基本区别在于, RedirectPermanent向浏览器发送HTTP 301 (永久移动)状态码,而Redirect将发送HTTP 302状态码。

如果资源已经永久移动,并且不再可以在以前的位置访问,请使用RedirectPermanent 。 大多数浏览器都会caching这个响应并自动执行redirect,而不需要再次请求原始资源。

如果将来可能在相同位置(URL)中使用资源,请使用Redirect

假设你的系统中有用户。 您也可以select删除现有用户。 您的网站有一个资源/user/{userid} ,显示给定用户的详细信息。 如果用户已被删除,则必须redirect到/user/does-not-exist页面。 在这种情况下:

如果用户永远不会恢复,那么即使URL指向/user/{userid} ,也应该使用RedirectPermanent以便浏览器可以直接进入/user/does-not-exist于后续请求中。

如果用户未来可能未被删除,则应使用常规Redirect

RedirectPermanent是301, Redirect是302状态码

他们发送不同的响应代码给浏览器。 301是永久redirect,302是临时redirect。 最终的效果是一样的,但是如果客户想要索引链接(最常见的客户端是这样的search引擎),那么永久redirect会告诉客户端更新其logging以忽略旧的链接并开始使用新的链接。 临时redirect会告诉客户端该页面现在正在redirect,但不会从其索引数据库中删除旧链接