Response.Redirect HTTP status code Response.Redirect HTTP status code asp.net asp.net

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.Redirectthan a real this-page-moved-to-another-URL-forever scenario (where a return code of 301 would be appropriate).