Blazor WebAssembly托管模式下AddSigningCredentials空引用异常如何解决
问题根源
ASP.NET Core 5.0 自带的IdentityServer集成扩展AddApiAuthorization默认会优先从配置文件读取IdentityServer:Key节点加载签名凭证,如果你删除了该节点或者节点配置无效,扩展内部解析时会直接抛出空引用异常,且不会读取你手动在代码中添加的签名凭证。
解决方法
步骤1:修改配置文件
在对应环境的配置文件(如appsettings.Development.json)中保留IdentityServer的Key配置,将Type设置为Manual,告诉扩展不要自动从配置加载签名凭证:
"IdentityServer": { "Key": { "Type": "Manual" } }
步骤2:调整代码配置
在Startup.cs的ConfigureServices方法中按顺序配置IdentityServer即可:
开发环境使用临时签名密钥
services.AddIdentityServer() .AddApiAuthorization<ApplicationUser, ApplicationDbContext>() .AddDeveloperSigningCredential();
生产环境使用自定义pfx证书
// 提前加载证书,确保证书路径有效、密码正确 var certBytes = File.ReadAllBytes(@"C:\Test\test.pfx"); var certificate = new X509Certificate2(certBytes, "SuperSecurePassword123!@"); services.AddIdentityServer() .AddApiAuthorization<ApplicationUser, ApplicationDbContext>() .AddSigningCredential(certificate);
配置完成后启动项目即可正常运行,代码中添加的签名凭证会正常生效。
内容的提问来源于stack exchange,提问作者Ogglas
相关产品推荐
相关产品推荐

