#.net-core #app-config #azure-app-configuration
#.net-ядро #app-config #azure-app-configuration
Вопрос:
Я пытаюсь получить доступ к конфигурации приложения с помощью простого консольного приложения. Пока у меня есть:
static void Main(string[] args)
{
IConfiguration config = new ConfigurationBuilder()
.AddUserSecrets("e7315677-d6aa-41ab-b7cc-8e801a7c8ae9")
.AddAzureAppConfiguration("ConnectionStrings:AppConfig")
.Build();
Console.WriteLine("Hello World!");
}
Но выдается исключение, указывающее, что
Система.Исключение ArgumentException: ‘Строка подключения не имеет значения для ключевого слова ‘ConnectionStrings:AppConfig’.’
Я поместил эту строку подключения в secrets.мы с json знаем, что это допустимо. Что я делаю не так?
{
"ConnectionStrings:AppConfig": "<my connection string>"
}
Спасибо.
Кевин
Ответ №1:
Убедитесь, что строка подключения начинается с «Endpoint =». Он ищет пары ключ / значение и интерпретирует значение без ключа как ключ без значения.
Ответ №2:
AddAzureAppConfiguration
Метод ожидает строку подключения в качестве аргумента. Вы получаете, System.ArgumentException
поскольку "ConnectionStrings:AppConfig"
это недопустимая строка подключения.
Чтобы использовать строку подключения, определенную в пользовательских секретах, для инициализации поставщика конфигурации приложения Azure, мы можем сначала создать экземпляр IConfiguration с пользовательским секретом и использовать его для доступа к свойству строки подключения. Вот измененная версия вашего кода, которая работает.
static void Main(string[] args)
{
IConfiguration intermediate = new ConfigurationBuilder()
.AddUserSecrets("e7315677-d6aa-41ab-b7cc-8e801a7c8ae9")
.Build();
IConfiguration configuration = new ConfigurationBuilder()
.AddAzureAppConfiguration(intermediate["ConnectionStrings:AppConfig"])
.Build();
}
Ответ №3:
Не повторяйте ту же ошибку, что и я, и не копируйте конечную точку с портала службы приложений Azure. Найдите раздел «первичный ключ», там есть кнопка копирования строки подключения. Затем он должен выдать вам строку, которая включает в себя, которая запускает Endpoint = и включает идентификатор и секрет