ASP.NET MVC中的Redirect()vs RedirectPermanent()

时间:2013-07-07 23:15:22

标签: asp.net-mvc

Redirect()RedirectPermanent()之间有何区别?我读过一些文章,但我不明白何时必须使用Redirect()RedirectPermanent()。你能展示一些例子。

3 个答案:

答案 0 :(得分:131)

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

如果资源已永久移动且无法再在之前的位置访问,请使用RedirectPermanent。大多数浏览器会缓存此响应并自动执行重定向,而无需再次请求原始资源。

如果资源在将来可用于同一位置(URL),请使用Redirect

示例

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

如果用户从不再次恢复,则应使用RedirectPermanent,以便浏览器可以在后续请求中直接转到/user/does-not-exist,即使该网址指向{{ 1}}。

如果将来某个时候用户可能未被删除,则应使用常规/user/{userid}

答案 1 :(得分:12)

RedirectPermanent为301,Redirect为302状态代码

答案 2 :(得分:0)

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