Настройка приложения Azure - Как установить секрет

Я следую этому руководству, чтобы настроить конфигурацию приложения Azure.

Но я думаю, что неправильно понял эту строку:

dotnet user-secrets set ConnectionStrings:AppConfig "Endpoint=<your_endpoint>;Id=<your_id>;Secret=<your_secret>"

Или скорее; что есть что...

  • your_endpoint = Я установил свою строку подключения первичного ключа (скопирован из ресурса конфигурации приложения в Azure)
  • your_id = Guid установлен как UserSecretsId (несколько шагов вверх в руководстве)
  • your_secret = ключ к секрету (ConnectionStrings:AppConfig в руководстве)

Но тогда моя программа всегда падает на:

config.AddAzureAppConfiguration(settings["ConnectionStrings:AppConfig"]);

за исключением:

System.FormatException HResult = 0x80131537 Сообщение = Вводимые данные не являются допустимой строкой Base-64, так как содержат неосновной 64-символ, более двух символов заполнения или недопустимый символ среди символов заполнения. Source=System.Private.CoreLib StackTrace: в System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) в System.Convert.FromBase64String(String s) в Microsoft.Azure.AppConfiguration.Azconfig.AzconfigCliSt..ring (HttpMessageHandler httpMessageHandler, Boolean disposeHandler) в Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationSource.Build(сборщик IConfigurationBuilder) в Microsoft.Extensions.Configuration.ConfigurationBuilder.HuildBuild.AspNetCore.Hosting.WebHostBuilder.Build () в Persistance.API.Program.Main(String[] args) в C:\Repos\ эксперимент \ эксперимент \Program.cs: строка 19

при выполнении этого блока кода (из руководства):

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        var settings = config.Build();
        config.AddAzureAppConfiguration(settings["ConnectionStrings:AppConfig"]);
    })
    .UseStartup<Startup>();

Щелкните правой кнопкой мыши по проекту -> Управление секретами пользователя. У меня есть этот файл json:

 {
    "Movies:ServiceApiKey": "12345",
    "ConnectionStrings:AppConfig": "Endpoint=<Primary Key Connection String copied value from azure resource>;Id=<the UserSecretsId tag in csproj file>;Secret=<the Key value in App Configuration resource>"
 }

Стоит отметить; моя строка соединения с первичным ключом содержит символы ';', '-', '+' и '=', но это не должны быть одинаковые символы...

1 ответ

Ключевым моментом здесь является не интерпретация сегментов строки соединения, а использование ее в качестве непрозрачного токена. Строка подключения может быть скопирована непосредственно с портала или получена через Azure CLI

az extension add -n appconfig
az appconfig credential list -n <your-app-configuration-name>

Если у вас есть строка подключения, точное, полное значение должно быть использовано для вызова AddAzureAppConfiguration, Скорее всего, "Секретная" часть вашей строки подключения будет заканчиваться символом "=", и я подозреваю, что она не была скопирована.

На ум приходят две вещи:

  1. Убедитесь, что вы запускаете команду добавления секретов из того же каталога, в котором существует файл csproj.
  2. пользовательские секреты будут работать только при локальном выполнении. Так что, если вы выполняете где-то удаленное, это не удастся. CreateDefaultBuilder вызывает AddUserSecrets, когда EnvironmentName является Development:

Если вы используете это в ядре.net, вы можете указать следующее в файле launch.json внутри конфигурации:

"env": {
    "ASPNETCORE_ENVIRONMENT": "Development"
},
Другие вопросы по тегам