升级ASP.NET Core 6.0至8.0后,如何无需手动添加代码启用用户机密?
解决方案
1. 检查项目文件中的UserSecretsId配置
升级项目时可能丢失了用户机密ID的配置,这是自动加载用户机密的必要前提。打开你的项目文件(.csproj),确认是否存在以下配置节点:
<PropertyGroup> <UserSecretsId>你的项目专属机密ID</UserSecretsId> </PropertyGroup>
如果没有,添加该节点,ID值需与当前Secrets.json所在的文件夹名称一致(文件夹路径通常为 %APPDATA%\Microsoft\UserSecrets\{你的机密ID})。你也可以通过VS 2022右键项目→管理用户机密,自动生成并配置这个ID。
2. 确认开发环境配置
用户机密默认仅在Development环境下自动加载,检查你的launchSettings.json文件,确保ASPNETCORE_ENVIRONMENT环境变量设置为Development:
"profiles": { "你的应用名称": { "commandName": "Project", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
若环境变量被修改为Production等其他值,默认不会触发用户机密加载逻辑。
3. 验证默认配置链是否被修改
ASP.NET Core 8.0中,WebApplication.CreateBuilder()默认会在开发环境下自动包含用户机密加载逻辑(前提是项目有正确的UserSecretsId)。如果你的Program.cs中手动修改了配置源顺序或移除了默认配置提供者,可能导致用户机密不被加载。避免使用类似以下会覆盖默认配置链的代码:
// 此类代码会清除默认配置源,导致用户机密无法自动加载 builder.Configuration.Clear(); builder.Configuration.AddJsonFile("appsettings.json");
内容的提问来源于stack exchange,提问作者Mike Lenart
相关产品推荐
相关产品推荐

