Почему сеанс asp.net истек раньше, чем истекло его время ожидания?

У меня есть веб-сервис Asp.net. У него есть метод M1. M1 создает папку для каждого сеанса. Когда сеанс истекает, я удаляю эту папку в global.asax, используя следующий код.

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);
        }
    }

Когда я открываю свой веб-сервис в браузере и вызываю M1, он работает правильно, и папка удаляется по истечении установленного времени истечения времени ожидания. Но когда я отправляю "Invoke" кнопка веб-сервиса во второй раз (после тайм-аута сеанса и удаления папки), его сеансstarts (создать папку) иends (удаляет папку)immediately before timeout that I have set.

Why this happens?

Если я открываю новое окно (новый сеанс) для каждого вызова метода все в порядке. Но у меня возникает проблема, когда я нажимаю кнопку "Вызвать" Кнопка во второй раз. Это что-то вроде проблемы кеширования для тех же сессий.

Ответы на вопрос(3)

Ваш ответ на вопрос