Home | My Disclaimer | Who am I? | Search...| Log in

Context.RewritePath and the Global.asax file

by Steve Syfuhs / December 01, 2008 04:00 PM
I've always been fond of making my URL's clean and simple.  With that being said, URL variables are always useful.  But in the case of this site, I decided to clean up the URL's so it's very easy for people to find content.  To do this, I added the code:
void Application_BeginRequest(object sender,
EventArgs e) { HttpContext context = HttpContext.Current; string path
= context.Request.Path; if (path.Contains(".aspx"))
{ if (path.ToLower().Contains("/article/"))
{ string id 

= path.Remove(0, path.LastIndexOf("/") + 1).Replace(".aspx", ""); try { int.Parse(id); context.RewritePath("~/article/article.aspx?ArticleID=" + id); } catch { // don't do anything because it's a postback } } } }

It's fairly simple to follow. First, I checked to see if it was an ASPX page, so I can weed out all the HTTP Handlers being used. Then I checked if it's a page I want to manipulate. Essentially, what Context.RewritePath does is take the incoming URL and modify it before it hits the page handler. So when I go to /Article/3.aspx, the code see's that it contain's both '.apsx' and 'article', and then because I know the format, I am stripping off everything else and keeping the article ID. Once that is done I pass the ID to the page that actually get's called behind the scenes. It's a quick and dirty way to make URL's human-friendly.

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


About

Steve is a bit of a Renaissance Kid when it comes to technology. He spends most of his time in the security stack.