.NET8 Blazor项目BlazoredLocalStorage注册失败引发注入报错求助
你遇到的错误是因为ILocalStorageService未被正确注册到依赖注入容器,或页面渲染模式不支持本地存储功能。以下是具体排查方向和修复方案:
问题排查与修复
确认服务注册的位置
务必保证builder.Services.AddBlazoredLocalStorage();这段代码是添加在客户端项目(MyProject.Client)的Program.cs中,而非服务端项目的Program.cs。.NET8 Blazor Web App的服务端与客户端依赖注入容器相互独立,服务端容器无法访问客户端注册的服务。检查NuGet包安装目标
确认Blazored.LocalStorageNuGet包是安装在客户端项目中,而非仅安装在服务端项目。若包仅存在于服务端,客户端项目将无法识别对应的服务类型。修正页面渲染模式
如果Login页面使用的是服务器端渲染(SSR),由于Blazored.LocalStorage依赖浏览器的localStorageAPI,服务器端环境无法提供该能力,会直接导致注入失败。解决办法是给Login页面指定交互式渲染模式:
在Login页面顶部添加:@rendermode InteractiveWebAssembly或使用自动适配模式:
@rendermode InteractiveAuto
报错信息回顾
InvalidOperationException: Cannot provide a value for property '_localStorage' on type 'MyProject.Client.Pages.Login'. There is no registered service of type 'Blazored.LocalStorage.ILocalStorageService'.
内容的提问来源于stack exchange,提问作者Val

