Provavelmente não tem nada a ver com a sessão, mas com a localização da sessão. Por padrão, a sessão é armazenada no mesmo processo (InProc), já que o aplicativo é sempre que a sessão de reinicialização do pool de aplicativos é perdida. Para solucionar isso, você pode salvar o estado da sessão no SQL Server ou no modo OutOfProc, que permite executar um processo separado no Windows, que armazenará somente as sessões e nunca será reciclado sem que os limites de tempo limite sejam atingidos.