右键单击“管理用户机密”仅在 Web 项目中可用。
控制台应用程序的过程略有不同
它需要手动将所需元素输入到您的 csproj 文件中,然后通过 PMC 添加机密
我在这篇博文中逐步概述了在当前项目中对我有用的过程:
https://medium.com/@granthair5/how-to-add-and-use-user-secrets-to-a-net-core-console-app-a0f169a8713f
tl;博士
第 1 步
右键项目并点击编辑 projectName.csproj
第 2 步
在 TargetFramework 下的 csproj 中添加<UserSecretsId>Insert New Guid Here</UserSecretsId>
在 csproj 的项目组中添加 <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0"/>
第 3 步
打开 PowerShell (admin) cd 进入项目目录并
输入dotnet user-secrets set YourSecretName "YourSecretContent"
这将在以下位置创建一个 secrets.json 文件:
%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json
其中 userSecretsId = 您为 csproj 创建的新 Guid
第 4 步
打开secrets.json 并编辑使其看起来与此类似
{
"YourClassName":{
"Secret1":"Secret1 Content",
"Secret2":"Secret2 Content"
}
}
通过添加您的类的名称,您可以将您的秘密绑定到要使用的对象。
创建一个与您刚刚在 JSON 中使用的名称相同的基本 POCO。
namespace YourNamespace
{
public class YourClassName
{
public string Secret1 { get; set; }
public string Secret2 { get; set; }
}
}
第 5 步
将Microsoft.Extensions.Configuration.UserSecrets Nuget 包添加到项目中
添加
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddUserSecrets<YourClassName>()
.AddEnvironmentVariables();
&
var services = new ServiceCollection()
.Configure<YourClassName>(Configuration.GetSection(nameof(YourClassName)))
.AddOptions()
.BuildServiceProvider();
services.GetService<SecretConsumer>();
到您的 Program.cs 文件。
然后将IOptions<YourClassName> 注入到你的类的构造函数中
private readonly YourClassName _secrets;
public SecretConsumer(IOptions<YourClassName> secrets)
{
_secrets = secrets.Value;
}
然后使用_secrets.Secret1;访问秘密
感谢 Patric 指出 services.GetService<NameOfClass>(); 应该是 services.GetService<SecretConsumer>();