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

IFr*_*izy 70 asp.net-mvc

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

Mer*_*ovi 137

两者之间的基本区别在于RedirectPermanent向浏览器发送HTTP 301(Moved Permanently)状态代码,而Redirect发送HTTP 302状态代码.

使用RedirectPermanent如果资源已被永久删除,将不再是先前的位置访问.大多数浏览器会缓存此响应并自动执行重定向,而无需再次请求原始资源.

使用Redirect如果资源可能在将来同一个位置(URL)可用.

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

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

如果将来某个时候用户可能未被删除,则应使用常规用户Redirect.

  • http://stackoverflow.com/questions/1393280/http-redirect-301-vs-302-permanent-vs-temporary (4认同)
  • 请注意,调试时"RedirectPermanent"会很烦人,因为第二次单击时,控制器的操作将被跳过,如果重定向到别处,则原始函数中不会出现断点.除非你在每次点击之前清空你的缓存. (3认同)

dm0*_*514 16

RedirectPermanent是301并且Redirect是302状态代码

  • 作为参考,浏览器可能记住301并且如果他们愿意则永远不会再次点击原始URL,而302表示如果重定向仍然存在则他们应该每次重新检查.实际的实现当然可能会有所不同,但这就是301和302背后的意图 (10认同)