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

.NET7 基于Identity Server的独立身份认证应用运行异常

Identity Server + ASP.NET Core 7 证书配置完整指南(附错误修复)

先解决眼前的两个错误

1. Newtonsoft.Json.JsonReaderException:解析数字时遇到意外字符

这百分百是appsettings.json的语法错误,直接排查:

  • 所有字符串类型的配置(比如证书路径、密码)必须用双引号括起来,不能用单引号或漏写引号
  • 删除配置项末尾多余的逗号(比如最后一个键值对后面不能加逗号)
  • 数字类型配置(如端口号)别加引号,字符串类型必须加,别搞混
  • 用IDE的JSON语法检查(比如VS里的红色波浪线)快速定位错误位置

2. System.NullReferenceException

本质是Identity Server找不到签名证书,导致核心服务初始化失败,连锁抛出空引用异常。问题根源是证书未成功加载,完整配置流程可彻底避免此问题。


正确的证书配置全流程

1. 生成合规的自签名证书

用PowerShell生成带可导出私钥的证书,命令如下:

# 生成绑定域名的证书,有效期10年,允许导出私钥
New-SelfSignedCertificate -DnsName "your-domain.com" -CertStoreLocation "Cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(10) -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048

# 替换<Thumbprint>为证书指纹(运行Get-ChildItem Cert:\CurrentUser\My可查看)
$cert = Get-ChildItem -Path Cert:\CurrentUser\My\<Thumbprint>

# 导出为PFX文件并设置密码(务必记好,后续配置要用)
Export-PfxCertificate -Cert $cert -FilePath "identityserver-cert.pfx" -Password (ConvertTo-SecureString "your-strong-password" -AsPlainText -Force)

2. 将证书加入项目

  • 把生成的identityserver-cert.pfx拖到项目根目录
  • 在Visual Studio中选中该文件,右键设置属性:
    • 复制到输出目录:选择始终复制
    • 生成操作:选择内容

3. 配置appsettings.json(关键!别写错)

严格按照以下格式配置,确保JSON语法完全合法:

"IdentityServer": {
  "Clients": [
    // 你的客户端配置(如有)
  ],
  "Key": {
    "Type": "File",
    "FilePath": "identityserver-cert.pfx",
    "Password": "your-strong-password"
  }
}
  • FilePath可使用相对路径(相对于发布后的运行目录)或绝对路径(Windows用C:\apps\cert.pfx,Linux用/var/apps/cert.pfx)
  • 密码必须与导出PFX时设置的一致,大小写敏感

4. 部署到第三方主机的额外注意事项

  • 确认主机安装的是ASP.NET Core 7 Runtime,而非仅.NET 7控制台运行时,缺少ASP.NET Core组件会引发各类异常
  • 给应用运行账号添加PFX文件的读取权限,尤其是Linux主机,避免权限不足导致证书加载失败
  • 若主机支持,可将证书安装到系统证书存储,用域名加载更稳定:
"IdentityServer": {
  "Key": {
    "Type": "Store",
    "StoreName": "My",
    "StoreLocation": "LocalMachine",
    "Name": "CN=your-domain.com"
  }
}

额外排查技巧

若仍有问题,开启详细日志定位根源:
在appsettings.json中添加以下配置,重启应用后查看日志,证书加载失败的具体原因会被明确记录:

"Logging": {
  "LogLevel": {
    "Default": "Debug",
    "Microsoft.AspNetCore": "Debug",
    "Duende.IdentityServer": "Debug"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:25:09