Verify that the idle timeout is not set in the application pool in IIS. The default value for this parameter is 20 minutes (which leads to confusion as to whether the timeout was started by the session timeout or the idle timeout), and in most cases you can safely set the value to 0, which disables it.
To check the IIS idle timeout, go to the "Advanced Settings for the Application Pool" section.
The idle timeout is a sliding window based on activity for the application, so requests from any client will be reset in the window. If your application is easy to use, you will often use a timeout, as a result of which your application pool will be recycled. The impact on users is that any sessions that were active will be lost, and users who will go to your application after downtime will have to wait until all of their startup processes have started.
source share