部署到IIS时ProtectedSessionStorage无法使用的问题求助
解决ProtectedSessionStorage在IIS部署后的密钥找不到问题
问题根源
你当前用ProtectKeysWithDpapi()默认采用当前用户级的DPAPI加密,本地调试时用的是你登录的用户加密密钥文件,但部署到IIS后,应用池使用的NetworkService用户无权解密该密钥;同时密钥目录的读写权限不足,也会导致系统无法加载或识别密钥。
具体解决步骤
调整DPAPI加密范围为机器级:修改服务配置,让同一机器上的所有用户都能解密密钥,适配IIS环境
services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@"c:\tmp-keys")) .ProtectKeysWithDpapi(protectToLocalMachine: true); // 启用机器级保护修复密钥目录权限:给
c:\tmp-keys目录添加NetworkService用户的读写权限- 右键
c:\tmp-keys→ 属性 → 安全选项卡 → 点击「编辑」 - 点击「添加」,输入
NETWORK SERVICE,点击「检查名称」确认后添加 - 给该用户分配「读取」「写入」「修改」权限,保存设置
- 右键
清理旧密钥并重启应用池:删除
c:\tmp-keys下所有旧密钥文件,重启IIS应用池,系统会自动生成机器级加密的新密钥可选:隔离多应用密钥:如果同一机器部署多个Blazor应用,建议添加应用名称标识,避免密钥冲突
services.AddDataProtection() .SetApplicationName("YourBlazorAppUniqueName") // 替换为你的应用唯一名称 .PersistKeysToFileSystem(new DirectoryInfo(@"c:\tmp-keys")) .ProtectKeysWithDpapi(protectToLocalMachine: true);
内容的提问来源于stack exchange,提问作者Sulieman Mansouri
相关产品推荐
相关产品推荐

