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

ASP.NET Core 5.0带IdentityServer4升级6.0报错no such table: Keys

升级ASP.NET Core 6.0后IdentityServer4相关Keys表缺失报错解决方案

报错核心原因:IdentityServer4最后支持的运行时版本为.NET 5,官方停止维护后原团队推出的.NET 6+对应的授权框架为收费的Duende Identity Server。你在升级项目过程中误将IdentityServer4相关依赖替换为Duende包后,Duende默认启用了自动密钥管理功能,会尝试查询数据库中的Keys表读取签名密钥,现有数据库未生成该表就会触发本次SQLite报错。

可选解决方案

  • 方案1:回退到.NET 5继续使用IdentityServer4
    将项目目标框架改回.NET 5,保留原有IdentityServer4的稳定版本依赖,不需要调整现有数据结构和业务逻辑即可正常运行。
  • 方案2:在.NET 6运行时兼容原有IdentityServer4
    不升级IdentityServer4相关Nuget包,显式在项目中引用ID4依赖的兼容版ASP.NET Core类库,保持原有ID4的服务注册逻辑不变,不会触发查询Keys表的逻辑,可直接在.NET 6环境下运行。
  • 方案3:正式迁移到Duende Identity Server
    确定要适配Duende的话按以下步骤操作:
    1. 卸载所有IdentityServer4相关Nuget包,安装对应.NET 6版本的Duende Identity Server包
    2. 执行迁移命令生成Keys表结构:在包管理控制台执行Add-Migration AddDuendeKeysTable,随后执行Update-Database同步到数据库
    3. 调整启动类中的授权服务注册逻辑,适配Duende的配置语法,原有客户端、资源等配置可基本复用
  • 方案4:开发环境临时绕过
    开发调试阶段可以显式指定签名证书,关闭自动密钥持久化功能,就不会触发Keys表查询,示例配置如下:
    builder.Services.AddIdentityServer()
        .AddSigningCredential(new X509Certificate2("你的签名证书路径.pfx", "证书密码"))
        // 其余原有配置保持不变
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:15:03