¿Por qué la sesión de asp.net caduca antes de su tiempo de espera?

Tengo un servicio web de asp.net. Tiene el método M1. M1 crea una carpeta para cada sesión. Cuando una sesión caduca, borro esa carpeta en global.asax usando el siguiente código.

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

Cuando abro mi servicio web en el navegador y llamo M1, funciona correctamente y la carpeta se borra en el tiempo de caducidad que he establecido. Pero cuando presento el botón "Invocar" del servicio web por segunda vez (después de que la sesión se borra y se elimina la carpeta), su sesiónempieza (crear carpeta) ytermina (borra carpeta)inmediatamente antes del tiempo de espera que he establecido.

¿Por qué sucede esto?

Si abro una nueva ventana (nueva sesión) para cada método, todo está bien. Pero tengo un problema cuando hago clic en el botón "Invocar" por segunda vez. Es algo así como un problema de caché para las mismas sesiones.

Respuestas a la pregunta(3)

Su respuesta a la pregunta