.Net Core 2.1 не читает секреты пользователя - PullRequest
0 голосов
/ 24 ноября 2018

Я запускаю приложение .net core 2.1 на Mac и пытаюсь получить доступ к строке подключения, которая должна быть переопределена моими пользовательскими секретами.Файл .csproj содержит файл guid

<UserSecretsId>{{Secret Guid}}</UserSecretsId>

Добавление секретных ключей пользователя

dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Secret Connection String"

Я создаю конфигурацию, которая прекрасно считывает данные из моего файла appsettings.json, но не заменяет стандартныеценности с теми из моих пользовательских секретов.

// this is done so I build my configurations in a class library
var assembly = AppDomain.CurrentDomain.GetAssemblies()
    .Single(o => o.EntryPoint != null);

var configurationBuilder = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    // .AddUserSecrets<Program>() -> This does not work either
    .AddUserSecrets(assembly, optional: false);

configurationBuilder.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
var configuration = configurationBuilder.Build();

Console.WriteLine(configuration["ConnectionStrings:DefaultConnection"]);

Как я уже говорил ранее, пытаясь получить доступ к значениям, он не заменяет значения значениями секретов пользователя.Пожалуйста, дайте мне знать, что мне не хватает.

1 Ответ

0 голосов
/ 26 ноября 2018

Порядок, в котором вы добавляете источники конфигурации в ConfigurationBuilder, имеет значение важно - те, что добавлены позже, переопределяют добавленные ранее.В вашем примере вы вызываете AddUserSecrets до AddJsonFile, в результате чего значения вашего файла JSON переопределяют ваши пользовательские секретные значения.

Для полноты вот фиксированныйверсия:

var configurationBuilder = new ConfigurationBuilder()
    .AddEnvironmentVariables();

configurationBuilder.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

// configurationBuilder.AddUserSecrets<Program>(); -> This does not work either
configurationBuilder.AddUserSecrets(assembly, optional: false);

В свете этого вы также можете переместить вызов AddEnvironmentVariables для запуска в настройках конфигурации позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...