MAUI&Blazor Windows应用重启后LocalStorage数据丢失问题求助
解决Windows平台MAUI Blazor中Blazored/LocalStorage重启后状态丢失的问题
核心原因
Windows平台的MAUI Blazor默认使用WebView2控件,其默认的用户数据文件夹(包含LocalStorage数据)可能指向临时目录,应用重启后该目录会被系统清理,导致Blazored/LocalStorage存储的状态丢失。
解决方案
1. 配置WebView2的持久化用户数据文件夹
修改MauiProgram.cs,为WebView2指定一个固定的、不会被清理的本地数据目录,确保LocalStorage数据持久化存储:
using Microsoft.Web.WebView2.WinForms; var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); builder.Services.AddMauiBlazorWebView(); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); #endif // 配置WebView2用户数据文件夹到应用本地持久化目录 builder.Services.Configure<BlazorWebViewOptions>(options => { options.WebView2Options = new WebView2Options { // 使用应用专属的本地数据目录,避免被系统清理 UserDataFolder = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "YourAppOfficialName", "WebView2PersistentData" ) }; }); var app = builder.Build(); app.Run();
说明:
Environment.SpecialFolder.LocalApplicationData指向当前用户的本地应用数据目录(如C:\Users\[用户名]\AppData\Local),这个目录不会被系统自动清理- 替换
YourAppOfficialName为你的应用名称,确保目录唯一性
2. 确认Blazored/LocalStorage的正确使用方式
确保组件中正确注入并异步访问LocalStorage,避免在组件初始化前同步调用导致数据读取失败:
@inject Blazored.LocalStorage.ILocalStorageService LocalStorage @implements IAsyncDisposable @code { private PageStateModel _currentState = new(); protected override async Task OnInitializedAsync() { // 异步读取保存的状态 var savedState = await LocalStorage.GetItemAsync<PageStateModel>("userPageState"); if (savedState != null) { _currentState = savedState; } } // 保存状态的示例方法(可在状态变更时调用) private async Task SaveCurrentState() { await LocalStorage.SetItemAsync("userPageState", _currentState); } // 可选:确保组件销毁时完成所有未完成的存储操作 public async ValueTask DisposeAsync() { await LocalStorage.DisposeAsync(); } }
3. 排查系统隐私设置
检查Windows系统的隐私设置,确认是否开启了"关闭应用后自动清理浏览数据":
- 打开Windows设置 → 隐私和安全性 → 权限和历史记录 → 查看和清除浏览历史记录
- 确保未勾选针对WebView2相关的自动清理选项(若有)
4. 更新依赖包版本
确保Blazored.LocalStorage和Microsoft.Maui.Controls使用最新稳定版,避免已知的存储兼容性bug。
内容的提问来源于stack exchange,提问作者Echo
相关产品推荐
相关产品推荐

