Как не получить нулевые значения из пользовательских секретных конфигов? - PullRequest
1 голос
/ 09 апреля 2019

Я хочу использовать пользовательские секреты для клиентской базы KeyVault и т. Д. Я вызываю свои конфиги с program.cs при настройке KeyVault.Когда я добавляю значения в appsettings.json, все работает нормально, но если я удаляю его и управляю пользовательскими секретами, он всегда говорит «ноль», когда мой program.cs работает.

И у меня есть правильные значения в созданном secret.json, и атрибут с guid к нему также находится в моем файле проекта

Я также попытался добавить ключ и значение кsecret.json и попытался получить его от контроллера, и он также нулевой.

Похоже, что WebHost.CreateDefaultBuilder в моем program.se не загружает мой secret.json файл.

И если я добавлю AssUserSecrets к моему WebHost.CreateDefaultBuilder(args) в progam.cs, разницы не будет, та же проблема.

Я использую WebHost.CreateDefaultBuilder, поэтому он будет использоваться по умолчанию в ядре asp .net 2.2

dontnet user-secret list 

Будет также показаны значения для меня из моего файла secret.json, поэтомузначение есть, секрет пользователя был инициализирован.

dontnet user-secret init

Кроме того, скажите, что он уже настроен.

Но все равно просто ноль при вызове моих secret.json атрибутов

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureServices(services => services.AddAutofac())
                .ConfigureAppConfiguration((context, builder) =>
                {
                    var config = builder.Build();
                    var vault = config["KeyVault:Vault"];
                    builder.AddAzureKeyVault($"https://{config["KeyVault:Vault"]}.vault.azure.net/", config["KeyVault:ClientId"], config["KeyVault:ClientSecret"]);

                });

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Я тестирую на своем сайте, и он работает нормально, вот шаги, на которые вы можете сослаться.

1. Щелкните правой кнопкой мыши на проекте и выберите Manage User Secrets.Он откроет файл secrets.json в Visual Studio, где вы можете добавить свои секреты, и добавит файл .csproj.

enter image description here

2.Добавьте то, что вы хотите добавить в свои секреты пользователя.Он включает в себя два способа написания объекта json и простую пару ключ / значение.enter image description here

3. Отображение пользовательских секретов в модель.

 public class KeyVault
 {
     public string Vault { get; set; }
     public string ClientId { get; set; }
     public string ClientSecret { get; set; }
 }

4. Добавление конфигурации.Установить пакет Microsoft.VisualStudio.Web.CodeGeneration.Design и Microsoft.Extensions.Configuration и Microsoft.Extensions.Configuration.UserSecrets

5.Связать значения.Это делается в файле Startup.cs.enter image description here

6.Используя свои сопоставленные секреты

public class HomeController : Controller
{
    private readonly KeyVault _keyvault;
    // I’ve injected twilioAccountDetails into the constructor

    public HomeController(IOptions<KeyVault> keyvault)
    {
        // We want to know if twilioAccountDetails is null so we throw an exception if it is           
        _keyvault = keyvault.Value ?? throw new ArgumentException(nameof(keyvault));
    }
........
}

7.Возвоните в Program.cs.enter image description here

Более подробную информацию о том, как использовать User Secrets in a .NET Core Web App, можно найти в этой статье .

0 голосов
/ 10 апреля 2019

Похоже, это связано с: Microsoft.Extensions.Configuration.AzureKeyVault

потому что, как только я добавляю этот nuget, он перестает работать.

ОБНОВЛЕНИЕ: Больше информации. похоже, что последняя версия Microsoft.Extensions.Configuration.AzureKeyVault понизила некоторые версии библиотеки для меня. И тогда он перестает работать.

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