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

Blazor WASM托管认证项目升级到.NET 6后点击登录报500错误如何解决

错误原因
  • 核心原因1:DataContext构造函数参数类型不匹配,EF Core在.NET 6中要求泛型DbContextOptions<TContext>作为构造函数的上下文配置参数,你当前使用非泛型DbContextOptions会导致依赖注入解析失败,触发服务端错误。
  • 核心原因2:Duende IdentityServer v5默认不再自动生成开发环境临时签名凭证,你未显式配置签名密钥时,登录流程中签发令牌会抛出异常。
  • 次要原因:首次生成的迁移未完整覆盖Duende IdentityServer的表结构变更要求,导致数据读写异常。
修复步骤
  1. 修正DataContext构造函数参数
    将你的DataContext代码替换为以下内容:
public class DataContext : ApiAuthorizationDbContext<ApplicationUser>
{
    public DataContext(DbContextOptions<DataContext> options, IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
    {
        ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
    }
}
  1. 给IdentityServer配置签名凭证
    修改Startup.cs中AddIdentityServer的配置链,开发环境添加开发者临时签名凭证,生产环境替换为你自己的正式证书即可:
services.AddIdentityServer()
    .AddDeveloperSigningCredential() // 新增该行
    .AddApiAuthorization<ApplicationUser, DataContext>( options =>
    {
        options.IdentityResources["openid"].UserClaims.Add(JwtClaimTypes.Role);
        options.ApiResources.Single().UserClaims.Add(JwtClaimTypes.Role);
    });
  1. 重新执行数据库迁移
    删除之前生成的UpdateToDuende迁移文件,在包管理器控制台依次执行以下命令:
Remove-Migration
Add-Migration UpdateToDuendeFixed
Update-Database

完成以上操作后重新运行项目即可解决登录500问题。如果仍有异常,可以开启IdentityServer的Debug级日志,查看具体错误信息调整配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:03