I upgraded Dvdcrate.com to be ASP.NET MVC and one of the problem is the old pages are indexed by search engines and being served on search results. So I have the old *.aspx page that I need to fix up and send along to the MVC page.
An example of the page in the search database;
www.dvdcrate.com/viewdvd.aspx?upc=5027035006161
And I need it to go to the new MVC controller and action like this;
www.dvdcrate.com/Media/Detail/5027035006161
So I did it this way, I put this in the Global.aspx.cs file;
protected void Application_BeginRequest (object sender, EventArgs e)
{
var requestUrl = Request.Url.ToString().ToLower();
if (requestUrl.Contains("/viewdvd.aspx"))
{
var equalPos = requestUrl.LastIndexOf("=") + 1;
var upc= requestUrl.Substring(equalPos, requestUrl.Length - equalPos);
Context.Response.StatusCode = 301;
Context.Response.Redirect("/Media/Detail/" + upc);
}
}
Probably not the most elegant, but it does work.
Enjoy!

April 8th, 2011 on 12:00 pm
Is there any reason why you didnt do:
if (Request.Path.Contains(“/viewdvd.aspx”)) {
Response.Redirect(“/Media/Detail/” + Request.QueryString["upc"]);
}
April 8th, 2011 on 1:16 pm
Well that seems entirely too logical and elegant. Kudos.
May 6th, 2011 on 1:37 pm
Nice solution.
Response.Redirect is not a permanent redirection (301 status code) it is a 302 (temporary)