Converting a Website to a Web Application

Visual Studio supports both “Website Projects” and “Web Applications”. If you’ve been working on your site for a long time, it’s likely a “Website Project”. If so, you should change it to a “Web Application”. If your project is already a Web Application, you can skip this section, and go on to read about moving your website to Azure.

As far as I can tell, Azure does not support “Website Projects”. To convert your website to a Web Application, you will need to create a new project, and migrate your files per these instructions. Unfortunately, this step may take you some time, depending on the size of your site, and its age (does it pre-date .Net 4.0?). In my case this step took an inordinate amount of time. If my Visual Studio project had already been converted into a Web Application, I probably could have shut down the DDoS Attack within an hour or two.

Here are some things to watch for when migrating to a Web Application:

  • If you have a big, complicated web.config, you should start over, as improvements in ASP.Net have made many of the old web.config settings obsolete. Also, if you are moving to Azure (like me), most of the IIS modules/handlers you use are likely already installed, so you don't need all the cruft that used to live in web.config.
  • Make sure rewrite rules don’t have spaces
  • If your web application does clever JavaScript tricks with your ASP.Net server-side controls, then you might want to check out Dino Esposito's article on Managing Client IDs.   Mr. Esposito has been writing great articles for many years on ASP.Net (IMHO, he is the best ASP.Net author of our time), and I strongly suggest Googling for his articles, or getting the free MSDN Magazine RSS Feed.
  • If your website pre-dates ASP.Net 4.0, you might want to see some ASP.Net 4.0 hightlights
  • You might also want to check out Dino Esposito's article on how ViewState has changed.
  • Finally, be sure to test your website inside Visual Studio (F5) on your development machine to make sure that it runs correctly on your machine before deploying.