5

我遵循本教程:https ://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows#access-a-secret

在我添加了Microsoft.Extensions.Configuration.UserSecrets包的 .NET Core 3.1 项目中,我单击了项目以管理机密,文件已在AppData目录中创建,并且UserSecretsId已自动添加到.csproj文件中。因为Host.CreateDefaultBuilder没有加载秘密我决定手动添加它们

 if (hostContext.HostingEnvironment.IsDevelopment())
        {
            builder.AddUserSecrets(Assembly.GetExecutingAssembly());
        }
    })
  .Build();

但后来我得到

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

我已经检查了预期描述中的建议,两个困境都得到了满足。

4

4 回答 4

3

您应该在 .csproj 文件中列出 UserSecretsId。如果您右键单击 API 层并管理用户机密,请确认 AppData 目录中的 GUID 与项目中的内容匹配。

<PropertyGroup>
<UserSecretsId>Your GUID</UserSecretsId>

您的 Program.cs 类应该使用 CreateDefaultBuilder,当环境为 Development 时,您应该看到有一个部分包含 Secrets。检查您的 ASP "ASPNETCORE_ENVIRONMENT": "Development"是否设置为开发。最后,我假设您的执行程序集具有上述用户机密的 PropertyGroup。

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
于 2020-09-29T13:11:41.310 回答
3

面临相同的运行时错误。我已禁用在 csproj 中为程序集自动创建 AssemblyInfo,因为我的系统 CI 会自动使用构建版本更新此文件

我的解决方法是添加

[assembly: UserSecretsId ("<Project guid>")] 

在装配信息中。

于 2021-04-12T15:57:19.783 回答
3

这里同样的问题。检查GitHub中的源代码 https://github.com/aspnet/Configuration/blob/f64994e0655659faefccead7ccb5c1edbfd4d4ba/src/Config.UserSecrets/UserSecretsConfigurationExtensions.cs#L94

检查<GenerateAssemblyInfo>true</GenerateAssemblyInfo>您的 .csproj 文件中是否也有。

于 2020-11-16T02:30:48.323 回答
0

只需使用项目上的上下文菜单并选择“管理用户机密...”并保存空的用户机密配置文件。Visual Studio 应自动创建必要的项目文件条目。

于 2022-01-06T17:07:04.690 回答