100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
.NET

Isolated Storage in Silverlight

Silverlight's sandboxed per-application, per-site file system for persisting settings, cached data, and small files on the user's machine without full disk access.

Data and ServicesBeginner8 min readJul 10, 2026
Analogies

Why Silverlight Cannot Just Write to the File System

Because Silverlight applications run inside a browser plug-in sandbox with no explicit user grant of file system access, they cannot open arbitrary paths like C:\Users\name\Documents the way a desktop WPF application can. Instead, the plug-in exposes isolated storage, a virtual file system scoped uniquely to the combination of the application and the site that hosts it, physically stored somewhere under the user's profile but addressable by the application only through the IsolatedStorageFile API, never through a real path string.

🏏

Cricket analogy: It's like a visiting team being given a locked equipment room at the host stadium rather than the keys to the whole facility; they can store gear inside that one room but can't wander into the home team's storage areas.

IsolatedStorageFile and IsolatedStorageSettings

IsolatedStorageFile.GetUserStoreForApplication returns a handle to the virtual store, on which you can create directories, open IsolatedStorageFileStream objects for reading and writing binary or text files, and delete or enumerate entries much like System.IO.File and Directory, but scoped entirely inside the sandbox. For simple key-value data such as a user's preferred theme or last-used filter, IsolatedStorageSettings.ApplicationSettings offers a dictionary-like wrapper that serializes values automatically and persists them across sessions with a single Save call, which is far less code than manually streaming XML or JSON to a file for small settings objects.

🏏

Cricket analogy: It's like a team having both a full equipment room for bats and kits (IsolatedStorageFile) and a small labeled pigeonhole system for quick items like match-day team sheets (ApplicationSettings) that anyone can grab without unlocking the big room.

Storage Quotas and the IncreaseQuotaTo Prompt

Every Silverlight application starts with a default isolated storage quota, historically 1 MB per site, tracked via IsolatedStorageFile.Quota and AvailableFreeSpace, and writing past that limit throws an IsolatedStorageException rather than silently truncating data. When an application legitimately needs more room, for example to cache a large offline dataset, it can call IncreaseQuotaTo, but this only succeeds if invoked from a user-initiated event handler such as a button click, because Silverlight requires the runtime to show the user a confirmation dialog and will refuse the request if it cannot prove the call originated from direct user interaction.

🏏

Cricket analogy: It's like a ground's storage shed having a fixed capacity for kit bags; if the touring squad wants extra space for additional equipment, the head groundsman must personally sign off after being asked directly by the team manager, not by an assistant acting alone.

Practical Use Cases: Offline Caching and User Preferences

Common uses for isolated storage include caching downloaded images or JSON responses so a Silverlight app can render something useful before a slow network round-trip completes, remembering the last window layout or filter state between sessions via ApplicationSettings, and supporting offline-capable line-of-business applications that queue up edits locally while disconnected and sync them to a server once connectivity returns. Because the store is tied to the combination of application and site of origin, moving the XAP to a different URL or renaming the application effectively starts the user with a fresh, empty store, which is a detail worth documenting for support teams fielding 'my saved data disappeared after the redeploy' tickets.

🏏

Cricket analogy: It's like a scorer keeping a running paper scorecard during a rain delay so play can resume instantly once the covers come off, rather than waiting to redownload the entire match record from the official server.

csharp
// Writing a settings value and a cached file to isolated storage
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
    // Simple key-value setting
    IsolatedStorageSettings.ApplicationSettings["Theme"] = "Dark";
    IsolatedStorageSettings.ApplicationSettings.Save();

    // Larger cached payload
    if (!store.DirectoryExists("cache"))
        store.CreateDirectory("cache");

    using (var stream = new IsolatedStorageFileStream("cache/products.json", FileMode.Create, store))
    using (var writer = new StreamWriter(stream))
    {
        writer.Write(jsonPayload);
    }
}

// Requesting more space, must run inside a click handler
private void UpgradeButton_Click(object sender, RoutedEventArgs e)
{
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (store.AvailableFreeSpace < 5 * 1024 * 1024)
        {
            bool granted = store.IncreaseQuotaTo(20 * 1024 * 1024);
            StatusText.Text = granted ? "Quota increased" : "User declined";
        }
    }
}

IncreaseQuotaTo only works when called synchronously from a genuine user-input event handler like a Click event. Calling it from a Completed event handler for a network response, or from any code path not directly triggered by user interaction, silently returns false without showing the confirmation dialog.

  • Isolated storage is a sandboxed virtual file system scoped per application and per site, not a path into the real file system.
  • IsolatedStorageFile provides directory/file APIs; IsolatedStorageSettings.ApplicationSettings offers a simpler dictionary for small key-value data.
  • The default quota is small (historically 1 MB); exceeding it throws IsolatedStorageException.
  • IncreaseQuotaTo must be called from a genuine user-initiated event handler or it silently fails.
  • Typical uses: caching network responses, remembering UI state, and queuing offline edits for later sync.
  • The store is tied to the app+site combination, so redeploying to a new URL starts users with an empty store.

Practice what you learned

Was this page helpful?

Topics covered

#NET#SilverlightStudyNotes#MicrosoftTechnologies#IsolatedStorageInSilverlight#Isolated#Storage#Silverlight#Cannot#StudyNotes#SkillVeris