Windows Plesk虚拟主机上ASP.NET Core应用启动问题求助

我已全面排查您网站的问题,发现应用启动时遭遇防伪令牌解密错误。该问题源于用于加密和解密安全令牌的应用数据保护密钥缺失或不匹配,可能由IIS应用池回收、密钥持久化缺失或服务器环境变更导致密钥丢失引发。
排查过程中,我查看了应用日志、IIS日志及事件查看器条目,确认问题与ASP.NET Core的数据保护机制相关,而非Plesk。由于该问题属于微软技术范畴,建议您联系微软支持获取进一步协助。
求快速修复方案!
已尝试以下操作但问题仍未解决:
- 独立发布版本(Self contained published version)
- 依赖框架发布版本(Framework dependent published version)
- 回收应用池(App Pool)
快速修复方案
1. 配置持久化密钥存储
在项目的Program.cs中添加数据保护密钥的持久化配置,指定固定存储路径(需确保应用池账户有读写权限):
builder.Services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@"C:\YourApp\DataProtectionKeys")) .SetApplicationName("YourAppName");
发布后手动创建指定目录,给IIS应用池身份分配该目录的读写权限。
2. 导入现有密钥
若本地开发环境有可用密钥,将%APPDATA%\Microsoft\ASP.NET\DataProtection-Keys下的密钥文件复制到服务器配置的持久化路径;若服务器之前有备份密钥,直接恢复到对应目录即可。
3. 临时禁用密钥自动轮换(应急用)
添加以下配置临时禁用密钥自动生成,避免密钥不匹配:
builder.Services.AddDataProtection() .DisableAutomaticKeyGeneration();
注意:此方法仅作临时应急,长期使用会降低安全性,后续需配置持久化存储恢复自动轮换。
4. 检查应用池权限
确认IIS应用池的运行身份对应用程序根目录及密钥存储目录拥有读写权限,权限不足会导致密钥无法读取或写入。
内容的提问来源于stack exchange,提问作者Usman Nazir
相关产品推荐
相关产品推荐

