использование пользовательских секретов dotnet для хранения списка строк
Как я могу сохранить это:
"myList" : [ "file", "something" ]
в пользовательских секретах dotnet?
Я могу добавить это в секреты пользователя с помощью команды:
dotnet user-secrets set --id my-id myList "[ \"file\", \"something\" ]"
но он сохраняется в виде строки и не ведет себя так же, как при чтении из appsettings.json.
мне кажется, что секреты пользователей не поддерживают массивы json. это правильно?
1 ответ
Вы можете напрямую редактировать "пользовательские секреты" вашего проекта. Пользовательские секреты проекта сохраняются в файле "secrets.json". Расположение файла здесь:
В Windows: % Appdata% \ Microsoft \ UserSecrets \
\ secrets.json В Linux: ~/.microsoft / usersecrets /
/secrets.json
<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"]
}
}
Вот модельный класс для примера пользовательских секретов:
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 Core, конфигурация доступна через Injection at Startup class. В ConfigurationBuilder нет необходимости.
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}