I had an issue the other day where a new Windows Server 2012 installation was not running my older ASP.NET 3.5 web sites. Everytime I would try to navigate to a .net 3.5 website I would see a '404: page not found' error message.

If I manually typed in a path containing a '.html' file this would load without any issues for me but '.aspx' files would not load. I noticed that the Mapping Handler was missing settings for older asp.net code - everything was asp.net 4.0. This explained why .html files were ok but .aspx files were returning a 404. The server just didn't know what to do with .aspx files for older .net sites.

I opened the Add Roles and Features Wizard (go to Control Panel, Turn Windows features on or off) and drilled into the IIS web server to ensure that asp.net 3.5 was installed but noticed that only ASP.NET 4.0 was installed on the server. To fix this I simply had to tick the checkbox for .Net Extensibility 3.5 and ASP.NET 3.5. You can find these checkboxes by drilling into the following tree menu:

  • Web Server (IIS) (installed)
    • Web Server (Installed)
      • Application Development (Installed)
        • .Net Extensibility 3.5
        • ASP.NET 3.5

If you get asked about restarting the server you can leave that checkbox unchecked as this install won't require a server reboot. Remember to restart IIS or recycle the app pool and website before you try and browse to your .net 3.5 website for the new settings to take effect.