Response.Redirect HTTP status code
Responses with status 301 are supposed to be cacheable, and I don't think you want that behavior for most ASP/ASP.NET redirects.
ASP.NET 4.0 is has the RedirectPermanent method for that if needed.
I've used this handy Permanent Redirect with success:
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();}
One common use case of Response.Redirect
is to move the user to another page in server-side code after a postback, e.g. something along the lines of
private void MyButton_Click(object sender, EventArgs e){ if (some condition) { Response.Redirect("ShowProduct.aspx"); } else { Response.Redirect("SorryOutOfStock.aspx"); }}
In those cases, 301 would be completely wrong. In fact, I think that the above case (conditionally move the user to another page after some UI interaction) is a much more common use of Response.Redirect
than a real this-page-moved-to-another-URL-forever scenario (where a return code of 301 would be appropriate).