mod_rewrite is the way most people solve this problem
i do it a bit differently
i have a "custom 404 handler" (sorry, i have no idea how to set that up in IIS) which is a module that gets control whenever the web server detects a 404, so instead of the web server just issuing a 404, this module gets control instead
then this module looks at the url that was requested, pulls out the page name, looks that up in a database table, and then pulls the content for that page out of the database and displays it
the url that the person typed in remains the same in the address bar, and no 404 is issued
(of course, if the page is not found in the database by name, then it actually is a genuine 404)
this method also allows you to manage the set of page names with an admin interface to the database, rather than having to add to a long list of lines in a mod-rewrite module