I guess I could blame a non-intuitive interface or bad error logging, but as they say a good craftsman never blames his tools.
IIS has been getting more and more secure - which is great, but sometimes the tools or the logging doesn't keep up.
An example is the configuration of ASP.NET on IIS. There are all sorts of potential issues -for example make sure you are running a different application pool for sites running different versions of ASP.Net (which you are warned about in the interface), but sometimes the problem is much simpler.
ASP.NET runs as a Web Service extension (which other interpreters like php will do), and they can be individually enabled or disabled.
What can work ok on one server won't work on another if the particular version of ASP.Net is not enabled.
The utility %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis is your typical windows program, running it with the flags -lk
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319> aspnet_regiis -lk W3SVC/1727045652/root/ 2.0.50727.3053 W3SVC/2017800512/root/ 4.0.30319.0 W3SVC/1934388718/root/ 4.0.30319.0Will list what sites you have and their ASP.Net version, it does a bunch of other stuff as well.