Настройка приложения Azure - Как установить секрет - PullRequest
1 голос
/ 19 марта 2019

Я следую этому руководству , чтобы настроить конфигурацию приложения 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-символ, более двух символов заполнения или недопустимый символ среди символов заполнения. Источник = System.Private.CoreLib Трассировки стека: в System.Convert.FromBase64CharPtr (Char * inputPtr, Int32 inputLength) в System.Convert.FromBase64String (String s) в Microsoft.Azure.AppConfiguration.Azconfig.AzconfigClient..ctor (String connectionString, HttpMessageHandler httpMessageHandler, Boolean disposeHandler) в Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationSource.Build (сборщик IConfigurationBuilder) в Microsoft.Extensions.Configuration.ConfigurationBuilder.Build () в Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices (AggregateException & hostingStartupErrors) в Microsoft.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 Ответ

1 голос
/ 25 марта 2019

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

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

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

...