Nesses últimos dias tive um problema no qual eu setava o Session TimeOut no Web.Config porém a configuração não surtia efeito.
Fiz umas pesquisas e vou compartilhar com vocês o que levantei a respeito desse assunto.
Para configurar o Session TimeOut corretamente talvez você precise mudar suas configurações em mais de um lugar, pois, determinada configuração pode estar anulando outra. Vou listar os possíveis lugares a se configurar logo abaixo:
Quando pensamos nesse assunto a primeira opção que geralmente vem a cabeça é a chave Session State do Web.config da aplicação:
<sessionState mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;trusted_connection=true"
cookieless="false"
timeout="20" />
-
Idle TimeOut do Application Pool
O tempo default de TimeOut do Application Pool por inatividade é de 20 minutos. Para alterá-lo selecione Propriedades no AppPool desejado, selecione a aba Performance e altere o tempo do Idle TimeOut.
Removendo a opção no Checkbox o processo nunca será reciclado por tempo de inatividade.

-
Recycle TimeOut do Application Pool
Selecione Propriedades no AppPool desejado e vá a aba Recycling.
Muito cuidado ao editar esta configuração pois um tempo curto de Recycle pode afetar diretamente a performance de sua aplicação.

Obs: As duas configurações mencionadas acima são aplicadas a todos os Sites que usam determinado Application Pool.
-
Session TimeOut da aplicação no IIS
Clique com o botão direito na aplicação desejada e selecione Propriedades. Selecione a aba Home Directory e clique em Configuration.
Abrindo a janela de Configuração de Aplicação selecione a aba Options e conforme mostrado abaixo, mude o tempo de Session TimeOut.

-
Default WebSite e DefaultAppPool
As configurações mencionadas acima tambem podem ser aplicadas ao Default WebSite e ao DefaultAppPool.
Caso alguma delas não tenha sido configurada em seu AppPool ou em seu WebSite, por uma questão de hierarquia, a configuração pode estar sendo herdada dos "defaults". Verifique-os para garantir que eles não vão atrapalhar o Session TimeOut de sua aplicação.
No meu caso o Session TimeOut da aplicação e o Idle TimeOut do AppPool estavam com um tempo pequeno, não permitindo que minhas alterações no Web.config surtissem efeito. Fique atento!
Até o próximo post!