As questioned by Andrew, you may be having a conflict between separate programs who share the app pool but run on different versions of the framework.
An application pool itself does not have a setting for which compiler/.net framework version to run. This is set by the compiler tab for the application that is running in the application pool and only one framework can be running in each pool.
If this is your case then it’s all about timing…. Since the application pools do not themselves drive what framework is used in them, the application does. The first application to start the application pool will set what the entire pool will run under for the .net framework since a pool can only run one framework.
If the pool is loaded/started by a 2.0 app then your 1.1 is crashing. You then have to stop the pool, restart and you immediately load the 1.1 app which causes the pool to run with the 1.1 framework.
To fix this conflict you can create separate app pools and assign applications to the pools.
You also have to be careful to ensure that the application's compiler tab is set properly and / or that the applications are put in the correct application pools.
For example, we have sometimes set it wrong and that created havoc. Check to see if you have any apps that are 1.1 but the compiler tab is set to 2.0 for them in IIS. That could definitely cause the issue if that app was the first to load the pool and may not cause an error for that app if the 1.1 code is all compatible with the 2.0 framework (and at least from my experience this is definitely possible).
Alternatively, see if other apps have accidentally been put into the pool with the app that is failing....