使用 dotnet user-secrets 存储字符串列表

using dotnet user-secrets to store a string list

我怎样才能保存这个:

"myList" : [ "file", "something" ]

在 dotnet 用户机密中?

我可以使用以下命令将其添加到用户机密:

dotnet user-secrets set --id my-id myList "[ \"file\", \"something\" ]"

但这被保存为字符串,并且与从 appsettings.json 中读取的行为不同。

在我看来,用户机密不支持 json 数组。这是正确的吗?

您可以直接编辑项目的“用户机密”。项目的用户机密保存在“secrets.json”文件中。文件位置在这里:

  • 在 Windows 中:%Appdata%\Microsoft\UserSecrets\\secrets.json

  • 在Linux中:~/.microsoft/usersecrets//secrets.json

基本上是项目用户机密的 GUID。您可以在 .csproj 文件中看到它,如下所示:

<UserSecretsId>16abe888-53cb-415c-9889-797efe87c422</UserSecretsId>

这是一个示例 secrets.json 文件:

{
"UserSecretsConfig" : {
  "UserName1": "john.doe",
  "Password1": "pppp",
  "Domain": "company.local",
  "Uri": "https://google.com/",
  "ToEmails":["user1@example.com", "user2@example.com", "user3@example.com"]
  }
}

这是示例用户机密的模型 class:

  public class MyUserSecretsConfig
    {
        public string UserName1 { get; set; }
        public string Password1 { get; set; }
        public string Domain { get; set; }
        public string Uri { get; set; }
        public IEnumerable<string> ToEmails { get; set; }
    }

这是在控制台应用程序中读取“用户机密”的示例代码:

 var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddUserSecrets<Program>();

            var config = builder.Build();
            MyUserSecretsConfig mySecrets = config.GetSection("UserSecretsConfig")
                      .Get<MyUserSecretsConfig>();

为了使上面显示的代码正常工作,您必须将这些包添加到您的项目中:

  • Microsoft.Extensions.Configuration.Binder
  • Microsoft.Extensions.Configuration.UserSecrets

此外,如果您将在 ASP.NET 核心应用程序中访问用户机密,请配置 可通过启动时注入获得 class。不需要 ConfigurationBuilder。

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}