Настройка приложения 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
, Скорее всего, "Секретная" часть вашей строки подключения будет заканчиваться символом "=", и я подозреваю, что она не была скопирована.
На ум приходят две вещи:
- Убедитесь, что вы запускаете команду добавления секретов из того же каталога, в котором существует файл csproj.
- пользовательские секреты будут работать только при локальном выполнении. Так что, если вы выполняете где-то удаленное, это не удастся. CreateDefaultBuilder вызывает AddUserSecrets, когда EnvironmentName является Development:
Если вы используете это в ядре.net, вы можете указать следующее в файле launch.json внутри конфигурации:
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},