Как добавить ключи в конфигурацию, имеющую несколько путей и привязать их к параметрамC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить ключи в конфигурацию, имеющую несколько путей и привязать их к параметрам

Сообщение Anonymous »

Мне нужно добавить ключи в конфигурацию для многопользовательской функции Azure во время выполнения функции.
Например:

Код: Выделить всё

Key 1 => "api:BaseUrl:tenantId1", "www.tenant1.com"
Key 2 => "api:BaseUrl:tenantId2", "www.tenant2.com"
Key 3 => "api:BaseUrl:tenantId3", "www.tenant3.com"
Когда я пытаюсь добавить, например, первый ключ, он добавляет 3 ключа... добавляет

Код: Выделить всё

Key                      Value
"api"                    null
"api:BaseUrl"            null
"api:BaseUrl:tenantId1"  "www.tenant1.com"
Изображение

и когда я пытаюсь связать, он возвращает ноль

Код: Выделить всё

ApiOptions apiOptions = new ApiOptions();
configuration.Bind(apiOptions);
тогда apiOptions имеет значение null.
И когда я пытаюсь:

Код: Выделить всё

configuration.GetSection(nameof(ApiOptions)).Get();
Выдает исключение:

Код: Выделить всё

"Cannot create instance of type 'System.String' because it has multiple public
parameterized constructors."
Вот класс ApiOptions

Код: Выделить всё

    public class ApiOptions
{
public string BaseUrl { get; set; }
public string IntegrationUrl{ get; set; }
}
Вот словарь, содержащий ключи и значения, которые мне нужно добавить позже в конфигурацию:

Код: Выделить всё

var inMemorySettings = new Dictionary
{
{"ApiOptions:BaseUrl:1ce1f5cc-7e01-4ee8-8e80-36e3e68405f3", "https://tenant1.lab.com"},
{"ApiOptions:IntegrationUrl:1ce1f5cc-7e01-4ee8-8e80-36e3e68405f3", "api/id"},
};
Создание конфигурации с использованием пар ключ-значение

Код: Выделить всё

var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddInMemoryCollection(inMemorySettings);
var configuration = configurationBuilder.Build();
configuration.Bind(apiOptions);

Код: Выделить всё

apiOptions
имеет значение null
Вот строка, которая выдает исключение:

Код: Выделить всё

ApiOptions? apiOptions1 = configuration.GetSection(nameof(ApiOptions)).Get();
Насколько я понимаю, он выдает ошибку, потому что сам ключ имеет двоеточие ":", но мне нужно иметь путь и добавить идентификатор клиента в путь к ключу, чтобы я мог иметь многотенантные ключи .

Подробнее здесь: https://stackoverflow.com/questions/788 ... to-options
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»