Response.Redirect HTTP status code

34,243

Solution 1

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.

Solution 2

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();
}

Solution 3

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).

Solution 4

In addition to the answer from Heinzi, the only entity on the web that is likely to take much notice of the 301 would be the search engines. Most browsers will not track and record 301 in order automatically redirect any subsequent request for the initial URL. Browsers treat 301 identically to how they treat 302. Hence 302 in dynamic content such as generated in ASP.NET is quite appropriate.

Share:
34,243
Vinz
Author by

Vinz

Updated on July 09, 2022

Comments

  • Vinz
    Vinz almost 2 years

    Why is it that ASP/ASP.NET Response.Redirect uses a HTTP-302 status code ("Moved Temporarily") even though in most cases a HTTP-301 status code ("Moved Permanently") would be more appropriate?

  • Vinz
    Vinz over 14 years
    The new RedirectPermanent method coming with ASP.NET 4.0 is quite handy! Unfortunately the project i am working on is running 2.0...
  • Vinz
    Vinz over 14 years
    Yes, it's the search spiders I'm worrying about.
  • Vinz
    Vinz over 14 years
    I'm using thisone too, but I was just wondering why I have to do this "workaround".
  • Kev
    Kev over 11 years
    Would be good if you didn't keep posting links to onfrnz.com/search in every one of your answers, it's a bit spammy. Thanks.