Yod*_*oda 8 asp.net-core secretsmanager
在 .NET Core 3.1 项目中,我添加了Microsoft.Extensions.Configuration.UserSecrets包,我单击了该项目来管理机密,该文件已在目录中创建AppData,并且UserSecretsId已自动添加到.csproj文件中。因为Host.CreateDefaultBuilder没有加载机密,所以我决定手动添加它们
if (hostContext.HostingEnvironment.IsDevelopment())
{
builder.AddUserSecrets(Assembly.GetExecutingAssembly());
}
})
.Build();
Run Code Online (Sandbox Code Playgroud)
但后来我明白了
System.InvalidOperationException
HResult=0x80131509
Message=Could not find 'UserSecretsIdAttribute' on assembly 'XXX'.
Check that the project for 'XXX' has set the 'UserSecretsId' build property.
If the 'UserSecretsId' property is already set then add a reference to the Microsoft.Extensions.Configuration.UserSecrets package.
Source=Microsoft.Extensions.Configuration.UserSecrets
Run Code Online (Sandbox Code Playgroud)
我已经检查了expecion描述中的建议,并且这两个困境都得到了满足。
小智 10
这里同样的问题。检查GitHub中的源代码后 https://github.com/aspnet/Configuration/blob/f64994e0655659faefccead7ccb5c1edbfd4d4ba/src/Config.UserSecrets/UserSecretsConfigurationExtensions.cs#L94
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>检查.csproj 文件中是否也有。
小智 8
面临同样的运行时错误。AssemblyInfo我已经禁用了在 中自动创建for 程序集csproj,因为我的系统 CI 自动使用构建版本更新此文件
我的解决方法是添加
[assembly: UserSecretsId ("<Project guid>")]
Run Code Online (Sandbox Code Playgroud)
在AssemblyInfo。
您应该在 .csproj 文件中列出 UserSecretsId。如果右键单击 API 层并管理用户机密,请确认 AppData 目录中的 GUID 与项目中的内容匹配。
<PropertyGroup>
<UserSecretsId>Your GUID</UserSecretsId>
Run Code Online (Sandbox Code Playgroud)
您的 Program.cs 类应该使用 CreateDefaultBuilder,当环境为 Development 时,您应该看到有一个包含 Secrets 的部分。检查您的 ASP "ASPNETCORE_ENVIRONMENT": "Development"是否设置为开发。最后,我假设您的执行程序集具有上述用户机密的 PropertyGroup。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5444 次 |
| 最近记录: |