首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.Redirect HTTP状态代码

问Response.Redirect HTTP状态代码
EN

Stack Overflow用户
提问于 2009-11-13 00:24:55
回答 5查看 34K关注 0票数 20

为什么ASP.NET Response.Redirect使用HTTP-302状态代码(“临时移动”),而在大多数情况下,HTTP-301状态代码(“永久移动”)更合适?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-13 00:39:34

状态为301的响应应该是可缓存的,我认为大多数ASP/ASP.NET重定向都不希望出现这种行为。

如果需要的话,ASP.NET 4.0提供了RedirectPermanent方法。

票数 41
EN

Stack Overflow用户

发布于 2009-11-13 01:01:24

我已经成功地使用了这个方便的永久重定向:

代码语言:javascript
复制
public void RedirectPermanent(string newPath)
{
  HttpContext.Current.Response.Clear();
  HttpContext.Current.Response.Status = "301 Moved Permanently";
  HttpContext.Current.Response.AddHeader("Location", newPath);
  HttpContext.Current.Response.End();
}
票数 19
EN

Stack Overflow用户

发布于 2009-11-13 00:35:37

Response.Redirect的一个常见用例是在回发之后将用户移动到服务器端代码中的另一个页面,例如

代码语言:javascript
复制
private void MyButton_Click(object sender, EventArgs e)
{
    if (some condition) {
         Response.Redirect("ShowProduct.aspx");
    } else {
         Response.Redirect("SorryOutOfStock.aspx");
    }
}

在这种情况下,301将是完全错误的。事实上,我认为上面的情况(在一些UI交互之后有条件地将用户移动到另一个页面)是Response.Redirect的一种更常见的用法,而不是真正的这个页面永远移动到另一个URL的场景(返回代码301比较合适)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1723487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档