Although you can get away with doing that I would suggest that it is not good practice. I would recommend that you abstract the stuff that is needed to be re-run into a separate Sub and call that Sub from App_Start and your restart code leaving only the real one-time stuff in App_Start.I call the App_Start procedure again.