Por que a sessão asp.net é expirada antes do tempo limite?

Eu tenho um webservice do Asp.net. Tem o método M1. M1 cria uma pasta para cada sessão. Quando uma sessão é expirada, eu apago essa pasta em global.asax usando o código a seguir.

void Session_End(object sender, EventArgs e)
    {
        try
        {
            System.IO.DirectoryInfo dirMyPacksFolder = new System.IO.DirectoryInfo(Utilities.getMyPacksFolder(Session));
            //dirMyPacksFolder.Parent.CreateSubdirectory("ended_" + Session.SessionID);
            if (dirMyPacksFolder.Exists)
            {
                dirMyPacksFolder.Delete(true);
            }
        }
        catch (Exception ex)
        {
            Utilities.logException("", ex);
        }
    }

Quando eu abro meu webservice no navegador e chamo M1, ele opera corretamente e a pasta é excluída no tempo limite de expiração que eu configurei. Mas quando eu envio o botão "Invoke" do webservice pela segunda vez (após o tempo limite da sessão e a pasta é excluída), sua sessãocomeça (criar pasta) etermina (exclui pasta)imediatamente antes do tempo limite que defini.

Por que isso acontece?

Se eu abrir uma nova janela (nova sessão) para cada chamada de método, tudo está OK. Mas eu tenho problema quando clico no botão "Invoke" pela segunda vez. É algo como o problema de cache para as mesmas sessões.

questionAnswers(3)

yourAnswerToTheQuestion