.NET7 Web API用户机密无法加载求助(MacOS+Visual Studio环境)
检查用户机密ID匹配性
确认项目文件(.csproj)中的UserSecretsId值,与~/.microsoft/usersecrets/目录下对应的文件夹名称完全一致。可通过终端执行cat 你的项目名.csproj | grep UserSecretsId查看ID,再进入~/.microsoft/usersecrets/目录核对文件夹是否存在。验证手动代码的添加位置
确保builder.Configuration.AddUserSecrets<Program>();代码放在var builder = WebApplication.CreateBuilder(args);之后、builder.Services配置之前,顺序错误会导致加载失效。正确示例:var builder = WebApplication.CreateBuilder(args); // 必须在此位置添加 builder.Configuration.AddUserSecrets<Program>(); // 后续再配置服务 builder.Services.AddControllersWithViews();校验机密文件JSON格式
打开用户机密的secrets.json文件,确保是合法JSON格式——无多余逗号、引号配对正确。可通过终端执行jq . secrets.json命令快速校验格式。清理重建项目
删除项目的bin和obj目录,或在Visual Studio中执行「清理解决方案」→「生成解决方案」,也可终端运行dotnet clean && dotnet build,缓存异常可能导致配置加载失败。排查环境变量优先级覆盖
若存在与用户机密同名的环境变量,会覆盖机密值。可在Program.cs中添加Console.WriteLine(builder.Configuration["你的机密键名"]);输出值,同时终端执行echo $你的机密键名检查是否存在同名环境变量。修复项目与机密的关联
在Visual Studio中右键项目选择「管理用户机密」,若无法打开对应文件,说明关联已损坏。可删除.csproj中的UserSecretsId节点,再重新右键添加用户机密生成新ID。
内容的提问来源于stack exchange,提问作者CMyd

