You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Blazor Azure应用中ProtectedBrowserStorage密钥环未找到报错求助

问题定位与解决方案

核心原因

Blazor Server的ProtectedLocalStorage依赖服务器端的数据保护密钥对本地存储内容加密/解密。当服务器端的数据保护密钥丢失或轮换后,用户本地存储中用旧密钥加密的令牌无法被解密,就会抛出The Key {guid} was not found in the key ring错误。哪怕部署在Azure App Service,默认配置下数据保护密钥存储在App Service的临时本地存储,重启、实例缩放或平台更新都可能导致密钥丢失。

解决方案

1. 持久化数据保护密钥(根治方案)

Azure App Service默认的本地存储是临时的,必须将数据保护密钥持久化到可靠存储,比如Azure Blob存储或Key Vault。在Program.cs中添加以下配置:

using Azure.Identity;
using Microsoft.AspNetCore.DataProtection;

var builder = WebApplication.CreateBuilder(args);

// 配置数据保护密钥持久化到Azure Blob + 用Key Vault加密密钥
builder.Services.AddDataProtection()
    .PersistKeysToAzureBlobStorage(new Uri("https://{你的存储账户名}.blob.core.windows.net/{容器名}/keys.xml"))
    .ProtectKeysWithAzureKeyVault(new Uri("https://{你的Key Vault名}.vault.azure.net/keys/{密钥名}"), new DefaultAzureCredential());

// 其他服务配置...

配置完成后,密钥会被安全持久化,不会随App Service实例变化丢失。

2. 修复受影响用户的本地存储

让受影响用户执行以下操作:

  • 打开浏览器开发者工具(F12),切换到Application标签页
  • 找到Local Storage,定位你的应用域名,删除token相关的所有键值对
  • 刷新页面并重新登录,系统会用当前有效的密钥重新加密并存储新令牌

3. 排查浏览器本地存储异常

让用户尝试:

  • 用隐私模式打开应用,验证是否能正常访问
  • 换其他浏览器测试,确认是否是原浏览器的本地存储损坏
    如果其他环境正常,建议用户清理浏览器缓存、重置浏览器设置或更新浏览器版本。

4. 检查App Service日志

登录Azure门户,进入你的App Service:

  • 打开日志流或应用日志,搜索DataProtection相关条目
  • 查看是否有密钥加载失败、权限不足等错误,进一步定位问题

内容的提问来源于stack exchange,提问作者USMC6072

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:12:44